我有他们提供的医院和治疗(与子治疗相关)的mysql表.我需要在表上进行mysql查询,该表返回提供列表中给出的所有处理/子处理的医院.例如:
从下表我需要医院提供列表中的所有治疗:(tretament_id,sub_treatment_id)=(1-1,1-2).因此结果必须是id为1和8的医院.
hospital_id | treatment_id | sub_treatment_id
-------------------------------------------------
1 | 1 | 1
1 | 1 | 2
1 | 1 | 3
_________________________________________________
4 | 1 | 1
4 | 2 | 1
_________________________________________________
8 | 1 | 1
8 | 1 | 2
_________________________________________________
7 | 2 | 1
我尝试了WHERE IN,但它的工作方式与OR一样,因此返回医院4,只满足(1,1).我怎样才能编写像WHERE IN这样的SQL查询但是它的工作方式与AND一样?
解决方法:
试试这个:
SELECT hospital_id
FROM mytable
WHERE (treatment_id, sub_treatment_id) IN ((1, 1), (1, 2))
GROUP BY hospital_id
HAVING COUNT(CASE
WHEN (treatment_id, sub_treatment_id) IN ((1, 1), (1, 2))
THEN 1
END) = 2
标签:mysql
来源: https://codeday.me/bug/20190623/1269464.html