这是我在本页上的第一个问题,很抱歉,如果我在某些事情上不具体或者我没有完全很好地解释自己,而且,英语不是我的母语,所以我可能会犯一些语法错误,所以我很抱歉提前。
好吧,我正在使用 MySQL 中的数据库,但在尝试获取查询并返回我想要的内容时遇到问题,可能是因为我的知识不够......
嗯,我有两张表,疾病和症状,它们具有多对多的关系,也就是说,一种疾病可以有 1 个或多个症状,反之亦然。这会导致生成另一个表来链接前两个表,就是这个(该表称为disease_diagnosis):
表格疾病_诊断
好吧,现在问题来了,我想采用与我通过的确切症状相对应的 id_enfermedade (如果它有一个或多于一个症状,它不应该返回该疾病),我的意思是,我只是一个系统返回与我介绍的确切症状相匹配的疾病。 这是我得到的真实表格:
问题是:如果我通过了症状 2 和 6,它应该返回:
但我希望它只是在确切的症状匹配时返回,我的意思是,如果存在另一种具有相同症状的疾病加上另一种疾病,系统应该忽略它,例如:
如果我们传递:1,2,3,4,5,6,7,它应该返回 6
但是如果我们传递 1,2,3,4,5,6,它应该返回 null 或空,因为不存在具有这些确切症状的疾病
正如我上面已经提到的,我的 SQL 水平非常低,阻碍了我进一步接近。
当我无法应对这种级别的事情时,我感到有点沮丧,所以我希望有人可以帮助我。
最佳答案
一种方法是使用group by
和having
,如下所示:
SELECT id_enfermedade
FROM disease_diagnosis
GROUP BY symptom_ID
HAVING SUM( symptom_ID IN (1, 2, 3) ) = 3 AND
SUM( symptom_ID NOT IN (1, 2, 3) ) = 0;
或者,您可以将 HAVING
表示为:
HAVING GROUP_CONCAT(id_enfermedade ORDER BY id_enfermedade) = '1,2,3'
这使得将列表作为单个参数传递变得更容易。
关于mysql - 我怎样才能从 MySQL 中与疾病相关的症状中发现疾病?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50408846/