Heim >Datenbank >MySQL-Tutorial >Wie ordne ich in PostgreSQL nach einem Alias und vermeide den Fehler „Spalte nicht vorhanden'?
So sortieren Sie nach einem Alias in PostgreSQL: Beheben des Fehlers „Spalte nicht vorhanden“
In PostgreSQL können Sie bei der Arbeit mit Aliasen Beim Bestellen der Ergebnisse kann es zu einem Fehler kommen. Betrachten Sie beispielsweise die folgende Abfrage:
SELECT title, (stock_one + stock_two) AS global_stock FROM product ORDER BY global_stock = 0, title;
Das Ausführen dieser Abfrage in PostgreSQL 8.1.23 wird wahrscheinlich den Fehler erzeugen: Abfrage fehlgeschlagen: FEHLER: Spalte „global_stock“ existiert nicht. Dieser Fehler tritt auf, weil der Alias „global_stock“ nicht als vorhandene Spalte in der Tabelle „product“ erkannt wird.
Um dieses Problem zu beheben, haben Sie einige Optionen:
Option 1: Nach Position sortieren
PostgreSQL ermöglicht die Sortierung nach der Position der Spalte statt nach ihrem Namen. Sie können beispielsweise schreiben:
select title, ( stock_one + stock_two ) as global_stock from product order by 2, 1
Diese Abfrage sortiert die Ergebnisse zuerst nach der zweiten Spalte (die „global_stock“ ist) und dann nach der ersten Spalte (die „title“ ist).
Option 2: Eine Unterabfrage einschließen
Eine andere Methode besteht darin, Ihre ursprüngliche Abfrage in eine Unterabfrage einzuschließen und die CASE-Anweisung zu verwenden um die Bestellung abzuwickeln:
SELECT * from ( select title, ( stock_one + stock_two ) as global_stock from product ) x order by (case when global_stock = 0 then 1 else 0 end) desc, title
Diese Abfrage erstellt zunächst eine Unterabfrage, die den Wert „global_stock“ berechnet. Die Unterabfrage wird dann in eine weitere SELECT-Anweisung eingeschlossen, die die CASE-Anweisung verwendet, um die Ergebnisse basierend auf der Verfügbarkeit von Elementen zu ordnen (0 für verfügbar, 1 für nicht verfügbar).
Das obige ist der detaillierte Inhalt vonWie ordne ich in PostgreSQL nach einem Alias und vermeide den Fehler „Spalte nicht vorhanden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!