Betrachten Sie die Tabelle table1
und seine entsprechende Lookup-Tabelle table2
:MySQL: LEFT + JOIN Alias
`table1`
a b
1 11
2 22
3 33
4 44
5 55
`table2`
b c
11 111
22 222
33 333
44 444
55 555
Sie eine Lookup zwischen table1
und table2
mit der folgenden Abfrage durchführen kann:
SELECT `table1`.`a`, `table1`.`b`, `table2`.`c`
FROM `table1`
LEFT JOIN `table2`
ON `table1`.`b` = `table2`.`b`
Welche würden korrekte Eingabe des Ergebnisses:
a b c
1 11 111
2 22 222
3 33 333
4 44 444
5 55 555
Problem
Angenommen, Sie benötigen aus irgendeinem Grund einen Alias für die Spalte b (Beispiel: Berechnung einiger Funktionen). Instinktiv können Sie versuchen, die folgende Abfrage ausführen:
SELECT `table1`.`a`, ABS(`table1`.`b`) as tb, `table2`.`c`
FROM `table1`
LEFT JOIN `table2`
ON tb = `table2`.`b`
Allerdings würde MySQL sagte:
#1054 - Unknown column 'tb' in 'on clause'
Frage
Was oben in der Abfrage ist falsch? Wie man es korrigiert?
Wie verwendet man Aliase in LEFT JOIN
Abfragen?
@Strawberry Angenommen, die Langhand ist weit schmerzhaft zu sein. Gibt es noch eine Alternative? –
@Strawberry _ "Die Art von JOIN ist immateriell" _ Verstand zu erklären, was das bedeutet? –
@Strawberry _ "Sie können auf diese Weise keine Spaltenaliasnamen referenzieren." _ Warum nicht? Was ist die "Regel" zu wissen, was ist schreiben und was ist falsch? –