Mysql SQL按计数排序

Mysql SQL按计数排序,mysql,database,sql-order-by,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 我希望根据组的总值从最小值到最大值进行排序,例如: A-2记录,B-1记录,C-3记录,因此它将成为: 3 Cat B 1 Apple A 2 Bo

如果我有这样一个表和数据:

ID |  Name  |  Group   

1    Apple     A    

2    Boy       A

3    Cat       B

4    Dog       C

5    Elep      C

6    Fish      C
我希望根据组的总值从最小值到最大值进行排序,例如: A-2记录,B-1记录,C-3记录,因此它将成为:

3    Cat       B

1    Apple     A    

2    Boy       A

4    Dog       C

5    Elep      C

6    Fish      C
我试过了

    $sql = "SELECT ID,Name FROM table ORDER BY COUNT(Group)";
但它只为我返回一个结果

有什么提示吗?谢谢。

试试:

SELECT count(*),group FROM table GROUP BY group ORDER BY group
按数量降序

SELECT count(*),group FROM table GROUP BY group ORDER BY count(*) DESC

这将按返回
组和
计数的
列对结果进行分组,并返回
组中的顺序
顺序

您需要首先聚合数据,这可以使用group by子句完成:

SELECT Group, COUNT(*)
FROM table
GROUP BY Group
ORDER BY COUNT(*) DESC
DESC关键字允许您首先显示最高计数,默认情况下,按升序排序,这将首先显示最低计数。

从表中按组依次选择组、计数(*)
SELECT * FROM table 
group by `Group`
ORDER BY COUNT(Group)
还是按伯爵的吩咐

选择group,COUNT(*)作为表中的COUNT BY group BY group ORDER BY COUNT DESC

下面给出了与您相反的信息。(通知组栏)

让我知道这对你是否合适

我也在尝试获取您想要的…

尝试使用以下查询:

SELECT
    GROUP,
    COUNT(*) AS Total_Count
FROM
    TABLE
GROUP BY
    GROUP
ORDER BY
    Total_Count DESC

请列出每场演出的名称,以及举办的次数。 首先列出最常举行的演出

event_id show_id event_name judge_id
0101    01  Dressage        01
0102    01  Jumping         02
0103    01  Led in          01
0201    02  Led in          02
0301    03  Led in          01
0401    04  Dressage        04
0501    05  Dressage        01
0502    05  Flag and Pole   02
答复:


……其他答案似乎都不符合提问者的要求

对于列为“group”的名为“things”的表:

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;
其中:

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

非常感谢您的回答,但它只会给我每个小组一个结果?比如:猫、苹果、狗狗,你运行这个代码还是其他代码?根据您提供的第一个表,此查询的输出将是:c3a2b1您应该更喜欢使用count(1)而不是count(*)。我猜谢谢您的asnwer,我尝试过,但它会为每个组返回一个结果?例如:猫、苹果、狗、C。@IreneLing我没有在select语句中包含名称-检查它谢谢你的回答,但很抱歉它没有给我正确的结果。这个问题的解决方法很好。
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;
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