我的问题是:
我有一张桌子叫
Doctor(id, name, department) 另一张表名为
department(id, name).医生与一个部门有关联(只有一个部门,而不是更多的部门)
我必须做一个查询,返回该部门与之相关的最大医生数。
我不知道该如何进行,我觉得我需要使用嵌套查询,但我刚刚开始,我在这方面做得很差。我认为应该是这样的,但是我也不太确定,我也不知道在嵌套的查询中应该放什么:
SELECT department.id
FROM (SELECT FROM WHERE) , department d, doctor doc
WHERE doc.id = d.id发布于 2014-01-21 18:37:44
SQL中常见的解决“使用最大数量的XYZ查找ABC”问题的方法如下:
在您的例子中,您可以这样做(我假设MySQL语法用于取上一行):
SELECT *
FROM department dp
ORDER BY (SELECT COUNT(*) FROM doctor d WHERE d.department_id=dp.id) DESC
LIMIT 1发布于 2014-01-21 18:36:55
您可以使用Group BY
Select top (1) department.id,count(Doctor.*) as numberofDocs
from department inner join Doctor on Doctor.id = department.id
Group by department.id
Order by count(Doctor.*) desc发布于 2014-01-21 19:08:12
我通常避免在MySQL中使用子查询,因为在MySQL中有一个众所周知的错误。由于错误,MySQL对每个外部查询结果执行内部查询。因此,如果您有10个部门,那么医生的查询将执行10次。该错误可能在MySQL 5.6中得到了修复。在这种情况下,部门的数量可能不多,因此性能可能不是您主要关心的问题。但是,下面的解决方案应该适用于MySQL并进行更多的优化。百叶窗灯的回答几乎是一样的,就在我前面:)。但是MySQL不支持命令顶部。
select dep.id, dep.name, count(doc.id) as dep_group_count from Doctor doc join department dep on doc.department = dep.id group by doc.department order by dep_group_count DESC LIMIT 1https://stackoverflow.com/questions/21266324
复制相似问题