好的,老实说,我的标题不正确,但是这就是我解释问题的方式。
这是我的示例数据:
id diagnosis symptom
1 a c
2 a a
3 a b
6 b a
7 b c
我的问题是,仅凭
in
子句中的条件,如何才能检索诊断?这是我的查询:
SELECT diagnosis
FROM vdoc_b_symptom
WHERE symptom IN ('a','c')
GROUP BY diagnosis
HAVING COUNT(*) = 2;
我想要获得的输出仅为
b
,但是它给了我两个输出。如何仅从“诊断”列中获取症状a
和a
的条件的c
值?对不起,我的英语太糟糕了。
最佳答案
您可以尝试在HAVING
中使用条件
模式(MySQL v5.6)
CREATE TABLE vdoc_b_symptom(
diagnosis varchar(5),
symptom varchar(5)
);
insert into vdoc_b_symptom values ('a','a');
insert into vdoc_b_symptom values ('a','b');
insert into vdoc_b_symptom values ('a','c');
insert into vdoc_b_symptom values ('b','a');
insert into vdoc_b_symptom values ('b','c');
查询#1
SELECT
diagnosis
FROM
vdoc_b_symptom
GROUP BY
diagnosis
HAVING
COUNT(distinct symptom) = 2
AND
SUM(symptom = 'a') > 0
AND
SUM(symptom = 'c') > 0;
| diagnosis |
| --------- |
| b |
View on DB Fiddle