我有一个表格,其中有一列id,name and externalid(FK)
。名称可以重复,但仅限于externalid不同。如何找出name列大于1的计数,但externalid是不同的。我尝试了以下查询。但我不确定结果。如果错误,请更正我的查询。
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 :(得分: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
仅当不同外部ID的数量等于名称在每个名称组中出现的次数时,此HAVING
子句才会返回true。这意味着每个外部ID对于该名称组都是唯一的。
请注意,我还将WHERE
子句的逻辑移到了连接条件中。这对我来说看起来更干净,我不知道为什么你在WHERE
条款中有这种逻辑。