繁体   English   中英

SQL查询以获取符合所有条件的记录

[英]SQL query to get records that match ALL the criteria

我需要编写一个SQL查询来让患者留在他们居住的城市的所有医院。 在一个城市当然可能有几家医院。

因此,例如,如果居住在华盛顿的患者'xxx'已经住院,我只有在他在华盛顿的所有医院并且不少的情况下才需要列出他。

这是表格的结构:

表患者

    patientID
    patientCity

表医院

    hospitalCode
    hospitalCity

table hospital_stay

    hospitalCode
    patientID
    cityStay

为MySQL做这个的最有效方法是什么? 谢谢!

此查询应该有效:

Select p.patientID
     , p.patientCity 
  from patient p
    inner join hospital h on h.hospitalCity = p.patientCity
    inner join hospital_stay hs on hs.hospitalCode = h.hospitalCode
 --where hs.cityStay = 1
group by p.patientID, p.patientCity 
having count(*) = (select count(*) from hospital
                    where hospitalCity = p.patientCity);

如果cityStay是一个cityStay患者去医院的标志,请删除评论。

不幸的是,MySQL在分组之前无法订购,因此在分组之前我必须使用子查询来正确排序结果。

玩得开心 :)

SELECT * FROM (
    SELECT 
        p.patientID,
        hs.hospitalCode
    FROM
        patient p
        INNER JOIN hospital h ON (p.patientCity = h.hospitalCity)
        LEFT JOIN hospital_stay hs ON (p.patientID = hs.patientID AND h.hospitalCode = hs.hospitalCode)
    ORDER BY 2
) AS tmp_table
GROUP BY 1
HAVING NOT ISNULL(hospitalCode)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM