![](/img/trans.png)
[英]MySQL Select Distinct and count number of each distinct condition matching criteria
[英]How to MySQL DISTINCT(COUNT) Returning Same number of rows for different criteria?
我繼承了兩個查詢,以提取不同角色代碼的總患者數,問題是,它們返回相同的數字-我現在知道DISTINCT正在生成此數字,因為下面描述的表中的一對多關系,但不確定如何向查詢中添加其他條件以進行隔離:
查詢1(理論上,結果應較小
SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'
AND cr.rcode = 'PS'
查詢1(理論上,結果應該大得多)
SELECT count(DISTINCT p.patient)
FROM react r
INNER JOIN CasesR cr
ON cr.globalid = r.globalid
LEFT JOIN profile p
ON cr.globalid = p.globalid
WHERE r.desc = 'A'
反應關鍵字段
rrecordid (PK)
globalid (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)
desc (Multiples in table IE: rrecordid=1,globalid=122; rrecordid=2,globalid=333)
CasesR關鍵字段
crecordid (PK)
globalid
(Multiples in table IE: crecordid=1,globalid=122;crecordid=2,globalid=333)
rcode (enum: 'A','B','C','D')
(multiples, globalid=122;rcode=A; globalid=122;rcode=B)
配置文件關鍵字段
globalid (PK)
patient (Multiples in table IE: globalid=1,patient=122;globalid=2,patient=122)
那么如何更改此查詢以獲取真實計數呢?
謝謝
匯總以上評論的內容。 。 。 您的查詢為您提供了真正的價值。 您的第一個查詢(使用AND cr.rcode = 'PS'
)表示:
查找所有
profile
記錄,其中(1)具有與desc = 'A'
react
的對應記錄, (2)在casesr
具有casesr
rcode = 'PS'
的對應記錄。 這些profile
記錄的patient
字段有多少個不同的值?
您的第二個查詢(沒有AND cr.rcode = 'PS'
)的意思是一樣的,只是將限制#2從“在具有casesr
rcode = 'PS'
casesr
具有相應的記錄”更改為“僅在...中具有相應的記錄”。 casesr
”。 自然,由於這是一個較寬松的限制,因此它永遠不會產生較小的價值。 但肯定可以產生相同的值。
您說您繼承了這些查詢; 您確定撰寫這些內容的人實際上並不打算讓他們通常給出相同的結果嗎? patient
會滿足第二個查詢的所有要求而又不滿足第一個查詢的額外要求,這是很不尋常的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.