2011-10-03 50 views
3

有沒有辦法在mysql中檢查一個特定的列,看看值是否多出現一次,如果是的話就得到該行。mysql得到一個值的重複

可以說,我的表看起來像這樣:

id | first_name | last_name | age 
1  john   doe  20 
.. .......  .....  ... 
.. .......  .....  ... 

所以我想MySQL的去,並帶回一個列表,其中年齡18以及其中FIRST_NAME出現更多然後一次。

+1

是性能低下的問題? –

+0

可能的重複[在MySQL中查找重複記錄](http://stackoverflow.com/questions/854128/find-duplicate-records-in-mysql) – Johan

回答

5
SELECT y.id, y.first_name, y.last_name, y.age 
    FROM (SELECT first_name 
       FROM YourTable 
       WHERE age = 18 
       GROUP BY first_name 
       HAVING COUNT(*) > 1) t 
     INNER JOIN YourTable y 
      ON t.first_name = y.first_name 
    WHERE y.age = 18; 
0
select id, first_name, last_name, age 
from YourTable where first_name in 
(
    select first_name 
    from YourTable 
    where age = 18 
    group by first_name 
    having count(first_name) > 1 
) 
2

您可以使用JOIN:

SELECT DISTINCT T1.first_name 
FROM yourtable T1 
JOIN yourtable T2 
ON T1.id < T2.id 
AND T1.first_name = T2.first_name 
AND T2.age = 18 
WHERE T1.age = 18 
+0

@Joe Stefanelli:謝謝,補充。 –

+0

你加了這麼快,我刪除了我原來的評論,因爲我第一次誤解了你的答案! :-) –

+0

很好的答案!我不認爲在沒有'HAVING'的情況下MySQL是可能的!我會使用它我的重載項目!如果可能的話,我會給你多個+1投票! – Timur