Heim >Datenbank >MySQL-Tutorial >Wie kann ich berechnete Spalten innerhalb derselben Abfrage in PostgreSQL verwenden?
PostgreSQL: Effiziente Verwendung berechneter Spalten innerhalb einer einzelnen Abfrage
PostgreSQL, ein leistungsstarkes relationales Datenbankverwaltungssystem, bietet robuste Datenbearbeitungsfunktionen. Die Verwendung berechneter Spalten innerhalb einer einzelnen Abfrage unterscheidet sich jedoch von einigen anderen Datenbanksystemen. Lassen Sie uns diese Nuance erkunden.
Betrachten Sie diesen SQL-ähnlichen Ansatz, der versucht, berechnete Spalten direkt in der Hauptabfrage zu verwenden:
<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2, (total_1 + total_2) AS total_3 FROM data;</code>
Dies wird in PostgreSQL fehlschlagen. Der Fehler tritt auf, weil total_1
und total_2
zum Zeitpunkt der Berechnung von total_3
nicht als vorhandene Spalten erkannt werden.
Die Lösung besteht darin, einen gemeinsamen Tabellenausdruck (CTE) oder eine Unterabfrage zu verwenden, um die berechneten Zwischenspalten verfügbar zu machen. So erreichen Sie dies mit einem CTE:
<code class="language-sql">WITH calculated_totals AS ( SELECT cost_1, quantity_1, cost_2, quantity_2, (cost_1 * quantity_1) AS total_1, (cost_2 * quantity_2) AS total_2 FROM data ) SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, (total_1 + total_2) AS total_3 FROM calculated_totals;</code>
Diese überarbeitete Abfrage definiert zunächst einen CTE calculated_totals
, der total_1
und total_2
berechnet. Die Hauptabfrage referenziert dann diese berechneten Spalten aus dem CTE, um total_3
zu berechnen. Dieser Ansatz gewährleistet eine korrekte Berechnung ohne Leistungsaufwand. Die Verwendung von CTEs wird im Allgemeinen aus Gründen der Lesbarkeit und Wartbarkeit bei komplexen Abfragen bevorzugt. Die Verwendung von CTEs oder Unterabfragen in diesem Szenario wirkt sich nicht negativ auf die Leistung aus.
Das obige ist der detaillierte Inhalt vonWie kann ich berechnete Spalten innerhalb derselben Abfrage in PostgreSQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!