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
Patricia ArquetteOriginal
2024-12-22 18:09:15837Durchsuche

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;

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!

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