有沒有辦法在mysql中檢查一個特定的列,看看值是否多出現一次,如果是的話就得到該行。mysql得到一個值的重複
可以說,我的表看起來像這樣:
id | first_name | last_name | age
1 john doe 20
.. ....... ..... ...
.. ....... ..... ...
所以我想MySQL的去,並帶回一個列表,其中年齡18以及其中FIRST_NAME出現更多然後一次。
有沒有辦法在mysql中檢查一個特定的列,看看值是否多出現一次,如果是的話就得到該行。mysql得到一個值的重複
可以說,我的表看起來像這樣:
id | first_name | last_name | age
1 john doe 20
.. ....... ..... ...
.. ....... ..... ...
所以我想MySQL的去,並帶回一個列表,其中年齡18以及其中FIRST_NAME出現更多然後一次。
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;
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
)
您可以使用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
@Joe Stefanelli:謝謝,補充。 –
你加了這麼快,我刪除了我原來的評論,因爲我第一次誤解了你的答案! :-) –
很好的答案!我不認爲在沒有'HAVING'的情況下MySQL是可能的!我會使用它我的重載項目!如果可能的話,我會給你多個+1投票! – Timur
是性能低下的問題? –
可能的重複[在MySQL中查找重複記錄](http://stackoverflow.com/questions/854128/find-duplicate-records-in-mysql) – Johan