【问题标题】:SQL select from inner join where count greater thanSQL select from inner join where count大于
【发布时间】:2014-03-02 13:34:22
【问题描述】:

医生

博士(PK) 医生姓名

病人

患者编号 (PK) 患者姓名 博士生

我有以下查询来获取医生的详细信息以及他/她咨询的患者数量。假设患者只有一位医生可以咨询。

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 名患者的医生。请建议我查询。

【问题讨论】:

  • 您使用的是 SQL Server 还是 MySQL?请适当地标记问题。

标签: mysql sql sql-server


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多