2012-03-27 73 views
0

我有一個表,看起來像這樣:選擇複製

 
id| country | 
=================== 
1 | Argelia | 
2 | USA  | 
3 | China | 
4 | Italy | 
4 | Italy | 
6 | USA  | 
7 | USA  | 
1 | Argelia | 

我想要選擇重複國家的查詢,但只有當ID不同。因此,從上面的表,查詢會產生這樣的:

 
id| country | 
=================== 
2 | USA  | 
6 | USA  | 
7 | USA  | 

意大利和Argelia重複的國家以及但是由於它們共享一個ID,他們不應該在輸出中。我能做什麼?

回答

4
SELECT c.id, 
     c.country 
FROM countries c 
     INNER JOIN (SELECT country, 
          COUNT(DISTINCT id) k 
        FROM countries 
        GROUP BY country 
        HAVING k > 1) t 
     ON c.country = t.country 

see it working

+0

他們想要的輸出,其中的ID不匹配,我認爲這將必須是一個子選擇。 – Matthew 2012-03-27 18:55:50

+0

謝謝,但沒有工作......它只是把計數考慮在內,而不關心值是否相等或不同,所以它也返回阿爾傑利亞和意大利。 – luqita 2012-03-27 18:57:27

+0

@Matthew doh我在想什麼呢修好了 – 2012-03-27 19:01:57

0
SELECT country, COUNT(DISTINCT id) AS cnt, GROUP_CONCAT(id) 
FROM yourtable 
GROUP BY country, id 
HAVING cnt > 1 
+0

謝謝,但沒有成功......它只是將計數考慮在內,而不關心數值是相等還是不同,所以它也返回阿爾及利亞和意大利。 – luqita 2012-03-27 18:57:36

+0

oops。嘗試'COUNT(DISTINCT ID)'然後 – 2012-03-27 19:01:49

+0

不工作...... :( – luqita 2012-03-27 19:06:28