Ich habe das gerade herausgefunden. Es ist wahrscheinlich eine schlechte Praxis, aber in diesem Fall hat es bei mir funktioniert.
Ich bin einer der faulen Leute, die nicht jeden Spaltennamen mit einem Tabellenpräfix aliasen oder ausschreiben wollen.
Sie können alle Spalten aus einer bestimmten Tabelle table_name.*
auswählen, indem Sie sie in Ihrer select-Anweisung verwenden.
Wenn Sie Spaltennamen dupliziert haben, wird MySQL vom ersten bis zum letzten überschrieben. Die Daten aus dem ersten duplizierten Spaltennamen werden überschrieben, wenn dieser Spaltenname erneut gefunden wird. Der doppelte Spaltenname, der zuletzt eingeht, gewinnt also.
Wenn ich 3 Tabellen verbinde, die jeweils einen doppelten Spaltennamen enthalten, bestimmt die Reihenfolge der Tabellen in der select-Anweisung, welche Daten ich für die doppelte Spalte erhalte.
Beispiel:
SELECT table1.* , table2.* , table3.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
Im obigen Beispiel wird der Wert von dup
I von sein table3
.
Was ist, wenn ich dup
der Wert von sein möchte table1
?
Dann muss ich das machen:
SELECT table3.* , table2.* , table1.* FROM table1 LEFT JOIN table2 ON table1.dup = table2.dup LEFT JOIN table3 ON table2.dup = table3.dup;
Jetzt table1
kommt der letzte, also ist der Wert von dup
der Wert aus Tabelle1.
Ich habe den Wert bekommen, den ich wollte, dup
ohne jede einzelne verdammte Spalte aufschreiben zu müssen, und ich bekomme immer noch alle Spalten, mit denen ich arbeiten kann. Yay!
Ich weiß, dass der Wert von dup
in allen 3 Tabellen gleich sein sollte, aber was ist, wenn table3
es keinen passenden Wert für gibt dup
? Dann dup
wäre im ersten Beispiel leer, und das wäre ein Mist.