我在尝试弄清楚如何选择具有多个值的多个记录时遇到了一些麻烦。让我试着分解一下。
我有两个表。
表 1:疾病
表 2:症状
我想做的是当用户输入症状时,它会遍历疾病表并找到与其相关的匹配症状,然后返回具有给定症状的疾病。
这是我目前的 SQL 查询:
select a.diseases_id, a.disease_name
from diseases a, symtoms b
where a.diseases_id = b.diseases_id
and b.symtom_description like '%Cough%' AND b.symtom_description like '%Sore throat%';
现在的问题是这个 SQL 查询什么都不返回,但是如果我删除 AND 语句,它会返回所有症状中包含“咳嗽”的疾病,但这不是我想要的。我应该能够选择一堆症状,如果一种疾病具有所有给出的症状并且它们匹配,它将返回该疾病。对于我发布的查询,它应该返回“胃食管反流”,因为这种疾病只包含咳嗽和喉咙痛。
任何人都可以告诉我如何使这项工作成功吗?
谢谢!
最佳答案
没有包含“咳嗽”和“喉咙痛”的行,因此您当然会得到一个空结果。
我会尝试这样的事情(未经测试):
select a.diseases_id, a.disease_name, b.symtom_description
from diseases a, symtoms b
where a.diseases_id = b.diseases_id
and (b.symtom_description like '%Cough%' OR b.symtom_description like '%Sore throat%')
group by a.diseases_id
having count(a.diseases_id)=2
关于mysql - 从表中选择多个不同的值并评估它们以匹配表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37215423/