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 dupI von sein table3.
Was ist, wenn ich dupder 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 table1kommt der letzte, also ist der Wert von dupder Wert aus Tabelle1.
Ich habe den Wert bekommen, den ich wollte, dupohne 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 dupin allen 3 Tabellen gleich sein sollte, aber was ist, wenn table3es keinen passenden Wert für gibt dup? Dann dupwäre im ersten Beispiel leer, und das wäre ein Mist.