Heim > Datenbank > MySQL-Tutorial > Wie kann ich einen Alias ​​in einer PostgreSQL-ORDER-BY-Klausel verwenden, ohne die Fehlermeldung „Spalte existiert nicht' zu erhalten?

Wie kann ich einen Alias ​​in einer PostgreSQL-ORDER-BY-Klausel verwenden, ohne die Fehlermeldung „Spalte existiert nicht' zu erhalten?

DDD
Freigeben: 2024-12-29 12:18:10
Original
141 Leute haben es durchsucht

How Can I Use an Alias in a PostgreSQL ORDER BY Clause Without Getting a

Verwendung eines ALIAS in der PostgreSQL ORDER BY-Klausel

Beim Versuch, einen Alias ​​in der ORDER BY-Klausel einer PostgreSQL-Abfrage zu verwenden, stoßen einige Benutzer auf den Fehler „column existiert nicht.“

Erläuterung des Problems

Berücksichtigen Sie Folgendes folgendes Beispiel:

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 führt zu dem Fehler: „Spalte ‚global_stock‘ existiert nicht.“ Dieser Fehler tritt auf, weil Aliase in der ORDER BY-Klausel nicht erkannt werden.

Lösung

Es gibt zwei mögliche Lösungen:

1. Numerische Reihenfolge:

Anstatt den Alias ​​zu verwenden, können Sie die Spalte anhand ihrer Position in der SELECT-Klausel referenzieren. Im obigen Beispiel entspricht der Alias ​​„global_stock“ der Spalte 2. Daher wäre die geänderte Abfrage:

SELECT 
    title, 
    (stock_one + stock_two) AS global_stock
FROM
    product
ORDER BY
    2, 1;
Nach dem Login kopieren

2. Unterabfrage mit CASE-Ausdruck:

Eine andere Möglichkeit besteht darin, eine Unterabfrage und einen CASE-Ausdruck zu verwenden:

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

In diesem Fall weist der CASE-Ausdruck den Zeilen mit den Wert 1 zu 'global_stock' = 0 und 0 für alle anderen. Die Abfrage sortiert dann die Ergebnisse in absteigender Reihenfolge basierend auf diesem Wert und priorisiert so effektiv die verfügbaren Elemente.

Das obige ist der detaillierte Inhalt vonWie kann ich einen Alias ​​in einer PostgreSQL-ORDER-BY-Klausel verwenden, ohne die Fehlermeldung „Spalte existiert nicht' zu erhalten?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage