mysql - 按 Count(field) 排序,但所有行都在答案中

标签 mysql count

我重写了一个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/

相关文章:

r - 使用 R 中的 str_count 函数计算多个模式

count - 在Rails控制台中将Big Decimal转换为String

mysql - SQL 仅显示计数函数的最大值

java - oneToMany 连接时如何避免持久化新对象?

mysql - 为什么 MySQL 对待 é 和 e 一样?

mysql - 在这个 Mysql 选择表示例中,U. 来自哪里?

mysql - 'show engine innodb status' 中过时的死锁信息

mysql - 根据值将一个表的列中的数据放入另一个表的列中

sql-server - sp_executesql 不使用索引?

MySQL:如何查询列并在同一个表中包含来自相关列的信息?