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

因此,例如,如果居住在华盛顿的患者“ xxx”已经在医院中,那么仅当他在华盛顿的所有医院中都在医院时,我才需要列出他。

这是表的结构:

表病人

    patientID
    patientCity


表医院

    hospitalCode
    hospitalCity


表hospital_stay

    hospitalCode
    patientID
    cityStay


对于MySQL,最有效的方法是什么?谢谢!

最佳答案

不幸的是,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)

关于mysql - SQL查询以获取符合所有条件的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19747925/

10-12 13:18