Heim > Datenbank > MySQL-Tutorial > Wie ordne ich in PostgreSQL nach einem Alias ​​und vermeide den Fehler „Spalte nicht vorhanden'?

Wie ordne ich in PostgreSQL nach einem Alias ​​und vermeide den Fehler „Spalte nicht vorhanden'?

Patricia Arquette
Freigeben: 2024-12-22 18:09:15
Original
893 Leute haben es durchsucht

How to Order By an Alias in PostgreSQL and Avoid the

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;
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage