我需要显示ID(在每种情况下都是唯一的)和名称,有时会有所不同。在我的代码中,如果它们是唯一的,我只想显示名称。
我尝试了distinct和count(*)= 1的问题,没有什么能解决我的问题。
SELECT DISTINCT id, name
FROM person
GROUP BY id, name
HAVING count(name) = 1;
结果仍然多次显示名称
答案 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)