首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询以获取符合所有条件的记录。

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

Stack Overflow用户
提问于 2013-11-02 23:06:51
回答 2查看 309关注 0票数 0

我需要编写一个SQL查询,以获取住在城市所有医院的病人。当然,在一个城市里可能有几家医院。

例如,如果住在华盛顿的病人“xxx”住在医院里,我只需要列出他在华盛顿所有医院都住过的情况。

这是表格的结构:

桌上病人

代码语言:javascript
复制
    patientID
    patientCity

桌上医院

代码语言:javascript
复制
    hospitalCode
    hospitalCity

表hospital_stay

代码语言:javascript
复制
    hospitalCode
    patientID
    cityStay

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-03 01:35:16

不幸的是,MySQL无法在分组之前进行排序,所以在对结果进行分组之前,我必须使用子查询来正确地排序结果。

玩得开心:)

代码语言:javascript
复制
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)
票数 1
EN

Stack Overflow用户

发布于 2013-11-02 23:55:00

这个查询应该可以:

代码语言:javascript
复制
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的标志上写着病人去了医院,请删除这条评论。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19747925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档