Heim >Datenbank >MySQL-Tutorial >Wie verwende ich Aliase in der ORDER BY-Klausel von PostgreSQL richtig?

Wie verwende ich Aliase in der ORDER BY-Klausel von PostgreSQL richtig?

DDD
DDDOriginal
2024-12-31 13:32:11997Durchsuche

How to Correctly Use Aliases in PostgreSQL's ORDER BY Clause?

PostgreSQL: Sortieren von Ergebnissen mithilfe eines ALIAS in ORDER BY

In PostgreSQL kann die Verwendung eines Alias ​​in der ORDER BY-Klausel zu Herausforderungen führen. Wie in der bereitgestellten Abfrage gezeigt, kann die direkte Referenzierung eines Alias ​​in ORDER BY zu einer Fehlermeldung führen.

Fehlererklärung:

PostgreSQL erfordert, dass die ORDER BY-Klausel referenziert Spalten, die im Ergebnissatz vorhanden sind. In dieser Abfrage entspricht der Alias ​​„global_stock“ keiner Spalte im endgültigen Ergebnissatz, daher tritt der Fehler auf.

Lösungen:

Es gibt zwei Ansätze So beheben Sie dieses Problem:

Methode 1: Neuanordnen des SELECT Liste:

Ordnen Sie die SELECT-Liste neu an, sodass der Alias ​​als zweiter (oder nachfolgender) Ausdruck erscheint. Die folgende Abfrage funktioniert:

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

Diese Neuordnung stellt sicher, dass der Alias ​​in der ORDER BY-Klausel korrekt referenziert wird.

Methode 2: Verwendung einer Unterabfrage:

Erstellen Sie eine Unterabfrage, die die ursprüngliche Auswahl umschließt, und verwenden Sie den Alias ​​in der ORDER BY-Klausel der äußeren Abfrage. Beispiel:

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;

Bei diesem Unterabfrageansatz wird der Alias ​​„global_stock“ innerhalb der verschachtelten SELECT-Anweisung verwendet und die verschachtelte Ergebnismenge wird dann in der äußeren Abfrage geordnet.

Das obige ist der detaillierte Inhalt vonWie verwende ich Aliase in der ORDER BY-Klausel von PostgreSQL richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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