【发布时间】:2020-06-05 02:42:43
【问题描述】:
如何在没有 Limit 子句的情况下重写以下查询?
SELECT project.title,
COUNT(project2manager.managerid) AS Cnt_Manager
FROM project2manager
JOIN project ON project2manager.projectid = project.projectid
GROUP BY project.title
ORDER BY Count_Manager DESC LIMIT 1;
+-----------------+-------------+
| project.title | Cnt_Manager |
+-----------------+-------------+
| City Scape | 8 |
+-----------------+-------------+
我尝试使用 MAX 子句,但我一直得到不正确的项目标题,但经理人数却是正确的。解决此问题的最佳方法是什么?
SELECT title , MAX(Total)
FROM (SELECT project.title, COUNT(project2manager.managerid) AS Total
FROM project2manager
JOIN project ON project2manager.projectid = project.projectid
GROUP BY project.title) AS Result;
+-------------------------+------------+
| project.title | MAX(Total) |
+-------------------------+------------+
| Comic Con | 8 |
+-------------------------+------------+
【问题讨论】:
-
为什么你特别想避免使用
LIMIT? -
我不想硬编码结果
-
我不明白你所说的硬编码结果是什么意思。
-
当然,我的问题不清楚。例如,如果 2 行具有相同的值,则 limit 将只返回一个。我不确定什么是最好的解决方案
-
是的,这是有道理的。现在您有两个答案,具体取决于您的 MySQL 版本。
标签: mysql sql group-by sql-order-by greatest-n-per-group