DISTINCT AND COUNT(*)= 1在SQL上不起作用

时间:2019-10-14 13:44:30

标签: sql count duplicates distinct

我需要显示ID(在每种情况下都是唯一的)和名称,有时会有所不同。在我的代码中,如果它们是唯一的,我只想显示名称。

我尝试了distinct和count(*)= 1的问题,没有什么能解决我的问题。

SELECT DISTINCT id, name
FROM person
GROUP BY id, name
HAVING count(name) = 1;

结果仍然多次显示名称

2 个答案:

答案 0 :(得分:2)

如果您的DBMS支持,则可以使用窗口功能:

SELECT id, name
FROM (
  SELECT id, name, COUNT(*) OVER(PARTITION BY name) AS NameCount -- get count of each name
  FROM person
) src
WHERE NameCount = 1

如果没有,您可以这样做:

SELECT id, name
FROM person
WHERE name IN (
  SELECT name
  FROM person
  GROUP BY name
  HAVING COUNT(*) = 1 -- Only get names that occur once
)

答案 1 :(得分:2)

通过“唯一”,我假设您的意思是名称只会出现一次。那不是SQL中“与众不同”的意思;使用distinct是为了删除重复项(用于计数或结果集中)。

如果是这样:

import pandas as pd 

data = {'A':['NW', 'UK'],'B':['Tom', 'krish'], 'C':[20, 19],'D':[20, 19 ],'E':[20,  19 ],'F':[20, 19]} 
df = pd.DataFrame(data) 
print(df)