zurück Ich habe 2 Tabellen in meiner Datenbank. Eine mit dem Namen data
, eine andere mit dem Namen changes
.MySQL Distinct und LINKE JOIN gibt doppelte
Die Spalten der Tabelle sind
Data
------------
|id | name |
|-----------
|1 | Test |
|2 | Hello|
------------
changes
------------------------------------
|id | name | related_id | Comments |
|-----------------------------------
|1 | Test | 1 | Example |
|2 | Hello| 2 | Example2 |
|3 | Hello| 2 | Example3 |
------------------------------------
Wie Sie sehen können, changes
. related_id
ist ein Fremdschlüssel zu data
. id
. changes
kann mehrere Zeilen der gleichen name
und related_id
und verschiedene Kommentare haben.
Nach dem Ausführen dieser Abfrage erkannte ich, dass mehrere Zeilen zurückgegeben werden, wo zum Beispiel Hello
2 Mal angezeigt werden kann.
SELECT DISTINCT data.name, changes.comments FROM data LEFT JOIN changes ON data.id = changes.related_id
Result
--------------------
|name | comments |
|-------------------
|Hello | Example2 |
|Hello | Example3 |
--------------------
Wie gehe ich darauf achten, dass nur 1 Zeile zurückgegeben wird? Ich ging nach SO, um nach Antworten zu suchen, und viele gaben an, DISTINCT
zu verwenden, doch in meinem Fall funktioniert es nicht.
Vielen Dank im Voraus.
Sie erhalten 2 verschiedene Datensätze zurückgegeben. Welcher Kommentar sollte zurückgegeben werden und warum? –
Alle Datensätze können zurückgegeben werden. Ich wollte nur einen eindeutigen 'Namen' mit allen zugehörigen Daten. Ist das möglich? – user2301818
Wenn Sie nur den 'name' brauchen, dann wählen Sie nur den' name': 'SELECT DISTINCT data.name FROM data ...' Aber dann brauchen Sie nicht einmal einen 'join' –