我重写了一个stackoverflow问题:
我有一个表格和这样的数据:
ID | Name | Type
1 Apple A
2 Boy A
3 Cat B
4 Dog C
5 Elep C
6 Fish C
我必须使用什么 SELECT 来获得这个结果:
4 Dog C
5 Elep C
6 Fish C
1 Apple A
2 Boy A
3 Cat B
我不想要这个......:
select ID, Name, Type from TABLE where GROUP BY Type order by count(*) desc;
...结果如下:
4 Dog C
1 Apple A
3 Cat B
谢谢
最佳答案
您遇到的问题是分组命令会影响您尝试选择的值。解决此问题的一种方法是在其自己的表中为每个 type
导出计数 (typetotal
),例如:
SELECT
Type,
COUNT(*) AS typetotal
FROM
TABLE
GROUP BY
Type
我们现在可以使用 INNER JOIN
命令将 Type
链接到 typetotal
到您的新 SELECT 查询,允许您排序查询如下所示:
SELECT
TABLE.ID,
TABLE.Name
TABLE.Type,
FROM
(
SELECT
Type,
COUNT(*) AS typetotal
FROM
TABLE
GROUP BY
Type
)
AS tblTypeCount
INNER JOIN
TABLE
ON
TABLE.Type = tblTypeCount.Type
ORDER BY
tblTypeCount.typetotal DESC
我希望我以一种有意义的方式解释了这一点,如果您需要任何说明或有任何建议,请告诉我。
关于mysql - 按 Count(field) 排序,但所有行都在答案中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49311028/