2016-03-01 48 views
0

我试图选择某人在此表中说出完全相同的语言(法语,意大利语和俄语)。它显然应当只返回玛雅:SQL选择与具有重复ID的多个项目的完全匹配

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'; 

任何帮助,将不胜感激因为我无法弄清楚如何处理这些重复的名字。

+0

你不能使用和多选“=”..因为如果lang是'法国'它绝对不能成为别人..所以使用“或”或IN – Roy

回答

2

试试这个:

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

DISTINCTCOUNT内只需要在情况下,你可以有重复,即关系到一个人一次以上相同的语言。

+0

这没有窍门!非常感谢! – FruitAbuser

相关问题