2015-04-02 63 views
1

我想选择记录与其他记录共享一个字段值的记录,但我试图只查询返回一个事件。例如,在该表:MySQL选择在哪里重复的字段,不返回所有记录

COUNTRY   LANGUAGE 
Mexico   Spanish 
Portugal  Portuguese 
Russia   Russian 
Spain   Spanish 
Thailand  Thai 
United Kingdom English 
United States English 

...我想回:

COUNTRY   LANGUAGE 
Mexico   Spanish 
Spain   Spanish 
United Kingdom English 
United States English 

使用:

SELECT * FROM `table` GROUP BY `language` HAVING COUNT(language) > 1 

我只得到:

COUNTRY   LANGUAGE 
Spain   Spanish 
United Kingdom English 

我在哪里错了?

回答

2

找到了解决办法:

SELECT * FROM `TABLE` WHERE `language` IN (
    SELECT * GROUP BY `language` HAVING COUNT(primary_language) > 1 
) 
1

你需要打破这种分为两个步骤。获得子选择的语言列表,然后得到行:

SELECT * FROM country_language其中语言(选择语言与country_language GROUP BY语言HAVING COUNT(*)> 1)

1

试试这个

选择国家,语言与table其中Language IN(SELECT LANGUAGE FROM table GROUP BY language HAVING COUNT(语言)> 1);

1

您需要一个子查询,它返回具有多个国家/地区的语言组。然后选择语言在该集合中的所有行:

SELECT * 
FROM `table` 
WHERE language IN 
(
    SELECT language FROM `table` GROUP BY `language` HAVING COUNT(*) > 1 
) 
1

我并不那么有经验,但应该这样做!

SELECT Country 
from (SELECT Country, count(Lang) as Langs 
FROM Land 
Group by Lang) as table2 
WHERE table2.Langs!=1