首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有两个表计数和分组的MySQL子查询

具有两个表计数和分组的MySQL子查询
EN

Stack Overflow用户
提问于 2018-02-22 12:29:32
回答 3查看 742关注 0票数 2

我有医生和医院的数据库,还有医院医生表。

我必须列出每个镇的医院数量,但只有有超过5名医生的医院。

代码语言:javascript
复制
SELECT hospital.town, count(town)
FROM hospital 
WHERE hospital.id = (
    SELECT count(hospital_id)
    FROM hospital_doctor GROUP BY hospital_id
    HAVING count(hospital_id)>5 )
GROUP BY town 

这是我的查询,但是MySQL会返回我的子查询返回超过1行。

医院

医院医生

我应该如何写这个查询?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-22 12:32:44

你可以用基本相同的结构做你想做的事:

代码语言:javascript
复制
Select h.town, count(*)
from hospital h
where h.id in (select hd.hospital_id
               from hospital_doctor hd
               group by hd.hospital_id
               having count(*) > 5
              )
group by h.town ;

请注意以下事项:

  • 您希望使用in而不是=,因为子查询可能返回多个行。
  • 子查询应该返回医院标识,而不是计数。
  • 每当表引用多个表时,请使用表别名和限定列名。
票数 2
EN

Stack Overflow用户

发布于 2018-02-22 12:44:13

代码语言:javascript
复制
Select hospital.town, count(town) 
from hospital 
where 
    hospital.id in ( 
        select hospital_id 
        from hospital_doctor 
        group by hospital_id 
        having count(hospital_id)>5 
    ) 
group by town
票数 0
EN

Stack Overflow用户

发布于 2018-02-22 12:45:45

代码语言:javascript
复制
SELECT h.town,  count(h.town)
FROM 
(
    SELECT hospital_id
    FROM hospital_doctor GROUP BY hospital_id
    HAVING count(doctor_id)>5 
) s1 
left outer join hospital h on (s1.hospital_id=h.id)  
GROUP BY h.town 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48927457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档