我有一个名为 foo
的表,其中包含以下字段:
- id
- type
- parentId
我想选择一个父 IDS 列表,按照它们在表中出现的次数的 COUNT(*)
降序排列。像这样:
SELECT DISTINCT parentId FROM `foo`
ORDER BY (COUNT(parentId) DESC where parentId = parentId)
如何才能以最有效的方式完成这项工作并将服务器的负载降到最低?
表中可以有成千上万条记录,因此手动遍历每条记录是 Not Acceptable ..
最佳答案
只需应用 GROUP BY
子句,并假设您在 parentId 上有一个索引、
,性能应该是相当不错的。 (FOREIGN KEY
或 PRIMARY KEY
parentId
看起来很可能是 FORIEGN KEY
,所以一定要定义强制索引的约束)。
SELECT `parentId`
FROM `foo`
GROUP BY `parentId`
ORDER BY COUNT(*) DESC
关于mysql - 如何返回按 COUNT(*) 降序排列的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266741/