我重写了一个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
由于
答案 0 :(得分:0)
您遇到的问题是分组命令会影响您尝试选择的值。解决此问题的一种方法是在其自己的表格中为每个typetotal
派生计数(type
),如:
SELECT
Type,
COUNT(*) AS typetotal
FROM
TABLE
GROUP BY
Type
我们现在可以使用Type
命令将typetotal
链接到INNER JOIN
到您的新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
我希望我已经以合理的方式解释了这一点,如果您需要任何澄清,或者有任何建议让我知道。