Variablen in SELECT-Anweisungen verwenden
Bei der Arbeit mit MySQL kann es vorkommen, dass Sie Variablen innerhalb derselben SELECT-Anweisung definieren und verwenden möchten Stellungnahme. Es ist jedoch wichtig, sich der damit verbundenen Einschränkungen bewusst zu sein.
Variablenzuweisung und Lesbarkeit
Gemäß der MySQL-Dokumentation wird es im Allgemeinen nicht empfohlen, a einen Wert zuzuweisen Benutzervariable und lesen Sie sie innerhalb derselben Anweisung. Die Auswertungsreihenfolge für Ausdrücke mit Benutzervariablen ist nicht definiert und kann je nach Anweisungselementen variieren.
Dies bedeutet, dass sich die folgende Abfrage möglicherweise nicht wie erwartet verhält:
SELECT @z:=SUM(item), 2*@z FROM TableA;
In diesem Fall , erhalten Sie wahrscheinlich NULL für die zweite Spalte.
Warum der Unterschied mit Prozeduren?
Sie fragen sich vielleicht, warum die folgende Abfrage, die eine gespeicherte Prozedur anstelle einer Benutzervariablen verwendet, wie erwartet funktioniert:
SELECT @z:=someProcedure(item), 2*@z FROM TableA;
Der Grund dafür ist, dass sie gespeichert ist Prozeduren werden anders ausgewertet als Benutzervariablen. Die Auswertungsreihenfolge für gespeicherte Prozeduren ist definiert und konsistent.
Verwenden einer Unterabfrage
Um die gewünschte Funktionalität zu erreichen, können Sie eine Unterabfrage verwenden:
select @z, @z*2 from (SELECT @z:=sum(item) FROM TableA ) t;
Dieser Ansatz verwendet eine Unterabfrage, um die Benutzervariable (@z) zu initialisieren und dann in der Hauptabfrage darauf zu verweisen.
Das obige ist der detaillierte Inhalt vonWie kann ich Variablen in einer MySQL-SELECT-Anweisung korrekt verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!