mysql - SQL select from inner join where count 大于

标签 mysql sql sql-server

医生

doctorid (PK)
doctorname

Patient

patientid (PK)
patientname
doctorid

I have the following query to get the doctors details with the number of patients that he/she consults. assume a patient has only one doctor to consult.

select d.doctorid,d.doctorname,count(p.patientid)
from doctor d
inner join patient p
on d.doctorid = p.doctorid
group by p.doctorid

现在我需要获取相同的信息,但仅限于拥有超过 1 个患者的医生。请给我一个查询建议。

最佳答案

使用HAVING clause

SELECT d.doctorid,
       d.doctorname,
       COUNT(p.patientid) AS patients
  FROM doctor d
       INNER JOIN patient p
                  ON d.doctorid = p.doctorid
GROUP BY 
       d.doctorid,
       d.doctorname
HAVING patients > 1

我使用别名 (patients) 而不是 COUNT(p.patientid),因为 HAVING 子句允许这样做。但您也可以坚持使用 COUNT(p.patientid)
另外,我建议您在 GROUP BY 子句中使用所有非聚合列。
而且,如果您检索 doctorname,您可能不必检索 doctorid

关于mysql - SQL select from inner join where count 大于,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22128236/

相关文章:

mysql - 在 mysql 上获取排名产生错误的排名

sql - 我可以在 oracle 中使用转置功能来实现这一点吗?

sql - 将数据存储为数字和 double

php - 遍历数组并输入数据库

sql-server - 我的全文搜索查询出了什么问题?

.net - 如何重复行值

php - 如何在 Symfony2 中使用多对多关系

mysql - 使用 NOT IN 从这个查询中我能得到什么?

mysql - 查找最接近指定日期时间的记录

sql - 在数据库中存储图像引用的最佳实践