![](/img/trans.png)
[英]SQL query to get matching records with the given collection elements(all elements should match) need with AND not OR
[英]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.