这是我在此页面上的第一个问题,对不起,如果我在某些事情上不是很明确或者我不能完全解释自己,而且英语不是我的母语,所以我可能会犯一些语法错误,所以对不起。

好的,我在MySQL中使用数据库,尝试获取查询并返回我想要的内容时遇到问题,可能是因为我的知识还不够...

好吧,我有两个表,疾病和症状有很多关系,也就是说,一种疾病可以有一种或多种症状,反之亦然。这导致生成另一个表,该表链接前两个表,并且是这个表(该表称为Diseases_diagnosis):

餐桌疾病_诊断

好的,现在出现问题了,我想采用与我通过的确切症状相对应的id_enfermedade(如果它有一种或多种症状,则不应返回该疾病),我的意思是,我只是一个要返回的系统与我介绍的确切症状相匹配的疾病。
这是我得到的真实表:



问题是:如果我通过症状2和6,则应该返回以下内容:



但是,我希望它仅在准确的症状匹配时才返回,我的意思是,如果存在另一种具有相同症状的疾病加上另一种疾病,则系统应忽略它:

如果我们通过:1,2,3,4,5,6,7它应该返回6

但是如果我们通过1,2,3,4,5,6,它应该返回null或空值,因为没有任何具有这些确切症状的疾病

正如我上面已经提到的,我的SQL级别很低,使我无法接近。

当我无法应付这种程度的事情时,这令人有些沮丧,所以我希望有人可以帮助我。

最佳答案

一种方法是像这样使用group byhaving

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/

10-11 03:19