Heim >Datenbank >MySQL-Tutorial >Wie kann ich berechnete Felder in MySQL-SELECT-Abfragen wiederverwenden?
effizient wiederverwenden berechnete Felder in MySQL -Abfragen
mysql ermöglicht die Wiederverwendung berechneter Felder innerhalb von SELECT
Anweisungen, Vereinfachung komplexer Abfragen und Reduzierung der Redundanz. Ein direktes Verweisen auf ein berechnetes Feld in derselben SELECT
-Liste wird jedoch nicht direkt unterstützt. Lassen Sie uns dies mit einem Beispiel veranschaulichen:
Die folgende Abfrage versucht, die total_sale
Berechnung wiederzuverwenden:
<code class="language-sql">SELECT s.f1 + s.f2 as total_sale, s.f1 / total_sale as f1_percent FROM sales s;</code>
Dies führt zu einem Fehler, da total_sale
zum Zeitpunkt f1_percent
nicht als Spalte erkannt wird.
Die Lösung: benutzerdefinierte Variablen
Um diese Einschränkung zu überwinden, können wir die benutzerdefinierten Variablen von MySQL nutzen:
<code class="language-sql">SELECT @total_sale := s.f1 + s.f2 as total_sale, s.f1 / @total_sale as f1_percent FROM sales s;</code>
Hier weisen wir der Benutzervariablen s.f1 s.f2
das Ergebnis von @total_sale
zu. Diese Variable ist dann zur Verwendung in der anschließenden Berechnung von f1_percent
.
Wichtige Überlegungen:
Die Dokumentation vonMysql warnt davor, sich auf die Reihenfolge der Bewertung zu verlassen, wenn Benutzervariablen in derselben Anweisung zugewiesen und gelesen werden. Das Verhalten könnte unvorhersehbar sein. Betrachten Sie für zuverlässige Ergebnisse, insbesondere in komplexen Abfragen, alternative Ansätze wie Unterabfragen oder gemeinsame Tabellenausdrücke (CTEs), die eine bessere Klarheit und Vorhersehbarkeit bieten. Weitere Einzelheiten finden Sie in der offiziellen MySQL -Dokumentation zu Benutzervariablen.
Das obige ist der detaillierte Inhalt vonWie kann ich berechnete Felder in MySQL-SELECT-Abfragen wiederverwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!