我需要编写一个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/