3 Stimmen

Mysql erhält Duplikate eines Werts

Gibt es einen Weg in MySQL, um eine bestimmte Spalte zu überprüfen und zu sehen, ob der Wert mehr als einmal vorkommt, und falls ja, die Zeile zu erhalten.

Angenommen, meine Tabelle sieht so aus:

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

Also möchte ich, dass MySQL eine Liste zurückgibt, in der das Alter 18 ist UND in der der first_name mehr als einmal vorkommt.

1 Stimmen

Ist Leistung ein Problem?

0 Stimmen

Möglicher Duplikat von Finden von Duplikaten in MySQL

5voto

Joe Stefanelli Punkte 128819
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;

2voto

Mark Byers Punkte 761508

Sie können einen JOIN verwenden:

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 Stimmen

@Joe Stefanelli: Vielen Dank, hinzugefügt.

0 Stimmen

Sie haben das so schnell hinzugefügt, dass ich meinen ursprünglichen Kommentar gelöscht habe, weil ich dachte, ich hätte Ihre Antwort beim ersten Mal falsch gelesen! :-)

0 Stimmen

Tolle Antwort! Ich dachte nicht, dass dies in MySQL ohne HAVING möglich ist! Ich werde es in meinem schweren Projekt verwenden! Wenn es möglich ist, werde ich dir mehr als eine +1 Stimme geben!

0voto

Adriano Carneiro Punkte 56027
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
)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X