2017-08-02 40 views
0

我有一個表,其中有一列id,name and externalid(FK)。該名稱可以重複,但只有當externalid不同時。我如何找出名稱列的數量大於1,但是外部id是不同的。我已經嘗試了以下查詢。但我不確定結果。如果錯誤,請糾正我的查詢。檢查重複條目與不同外鍵id在同一個表中在哪裏條款

SELECT ff.Name , COUNT(*) count FROM tablee ff 
join tablee f on ff.ID = f.ID 
where f.externalid=ff.externalid 
GROUP BY ff.Name Having COUNT(*) > 1 

回答

0

我認爲,所有你需要做的是改變你的HAVING條款:

SELECT 
    ff.Name, 
    COUNT(*) count 
FROM tablee ff 
INNER JOIN tablee f 
    ON ff.ID = f.ID AND 
     f.externalid = ff.externalid 
GROUP BY 
    ff.Name 
HAVING 
    COUNT(DISTINCT ff.externalid) = COUNT(*) AND 
    COUNT(*) > 1 

HAVING子句將返回true,只有當不同的外部ID的數量等於出現名字的次數在每個名稱組中。這意味着每個外部ID對該名稱組都是唯一的。

請注意,我也將WHERE子句的邏輯移入連接條件。這看起來更清潔,我不知道你爲什麼在WHERE條款中有這種邏輯。