我的查询有问题。我将使用一个例子。因此,对于名为'脓肿'的疾病名称,这在我诊断的表中已被诊断两次,但我只得到1的计数。但是当我在诊断表中使用该病毒检查时,我得到2.请重建我的答案如下!
问题: 列出所有疾病名称和每种疾病被诊断出的次数 诊所。该清单很少被发现疾病,所以只显示有疾病的疾病 诊断计数小于5.注意:零小于5.提供SQL查询和数据 结果的可视化。
我的回答:
SELECT disease.name, COUNT(*) AS number_of_disease_diagnosed
FROM disease
WHERE diseaseid IN (SELECT DISTINCT diseaseid FROM diagnosed)
GROUP BY disease.name
HAVING COUNT(*) <= 5
UNION
SELECT diseaseid,0
FROM disease
WHERE diseaseid NOT IN (SELECT DISTINCT diseaseid FROM diagnosed);
答案 0 :(得分:0)
我认为问题出在你的查询上。正如囚徒暗示的那样,你应该使用连接而不是在子查询中使用。
具体来说,我会对此查询使用外部联接,例如:
select disease.name, count(diagnosed.diagnosedid) as Count
from
disease
left outer join diagnosed on disease.diseaseID = diagnosed.diseaseID
group by
disease.Name
having
count(diagnosed.diagnosedid) <= 5
外部联接将为您提供疾病的每一行,并从诊断的表中匹配行(它们存在的位置)。然后使用GROUP BY&amp; HAVING子句将过滤到您寻找的结果。
希望这有帮助。