SQL选择与具有重复ID的多个项目的完全匹配

时间:2016-03-01 06:07:57

标签: sql oracle

我正在尝试从此表中选择使用完全相同语言(法语,意大利语和俄语)的人。它显然应该只返回Maja:

PERSON     LANG     
---------- ----------
Ann        English   
Ann        Japanese  
Bill       English   
Bill       Japanese  
Bill       Russian   
Chris      English   
Chris      Russian   
David      English   
David      Japanese  
David      Russian   
Ernie      English   
Ernie      French    
Ernie      Japanese  
Fumie      Japanese  
Fumie      Korean    
Maja       French    
Maja       Italian   
Maja       Russian   

我可以理解的代码不起作用,因为名称是重复的,并且此查询返回0结果:

SELECT  DISTINCT PERSON
FROM SPEAKS
WHERE LANG = 'French'
AND LANG = 'Russian'
AND LANG = 'Italian';

对此的任何帮助都将非常感激,因为我无法弄清楚如何处理这些重复的名称。

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT PERSON
FROM SPEAKS
WHERE LANG IN( 'French', 'Russian', 'Italian')
GROUP BY PERSON
HAVING COUNT(DISTINCT LANG) = 3

DISTINCT内的COUNT仅在您可以有重复项时才需要,即与一个人有多次相同的语言。