Ire*_*ing 61 mysql database sql-order-by
如果我有一个表和这样的数据:
ID | Name | Group
1 Apple A
2 Boy A
3 Cat B
4 Dog C
5 Elep C
6 Fish C
Run Code Online (Sandbox Code Playgroud)
我希望按照从最小值到最大值的总数来订购,例如:A - 2条记录,B - 1条记录,C - 3条记录,因此它将成为:
3 Cat B
1 Apple A
2 Boy A
4 Dog C
5 Elep C
6 Fish C
Run Code Online (Sandbox Code Playgroud)
我试过了
$sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";
Run Code Online (Sandbox Code Playgroud)
但它只是为我返回一个结果.
有没有提示?谢谢.
Vin*_*zzi 122
您需要首先聚合数据,这可以使用GROUP BY子句完成:
SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC
Run Code Online (Sandbox Code Playgroud)
DESC关键字允许您首先显示最高计数,按默认顺序显示ORDER BY按升序显示最低计数.
xxj*_*jnn 10
...其他答案似乎都没有按照提问者的要求行事。
对于名为“things”且列“group”的表:
SELECT
things.*, counter.count
FROM
things
LEFT JOIN (
SELECT
things.group, count(things.group) as count
FROM
things
GROUP BY
things.group
) counter ON counter.group = things.group
ORDER BY
counter.count ASC;
Run Code Online (Sandbox Code Playgroud)
这使:
id | name | group | count
---------------------------
3 | Cat | B | 1
1 | Apple | A | 2
2 | Boy | A | 2
4 | Dog | C | 3
5 | Elep | C | 3
6 | Fish | C | 3
Run Code Online (Sandbox Code Playgroud)
SELECT group, COUNT(*) FROM table GROUP BY group ORDER BY group
Run Code Online (Sandbox Code Playgroud)
或按计数订购
SELECT group, COUNT(*) AS count FROM table GROUP BY group ORDER BY count DESC
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149761 次 |
| 最近记录: |