Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich PostgreSQL-Tabellen mit Array-Typen und behalte die Reihenfolge der Elemente bei?

Wie verbinde ich PostgreSQL-Tabellen mit Array-Typen und behalte die Reihenfolge der Elemente bei?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 13:53:25502Durchsuche

How to Join PostgreSQL Tables with Array Types and Maintain Element Order?

PostgreSQL-Tabellen mit Array-Typen verbinden und die Reihenfolge der Elemente beibehalten

Betrachten Sie zwei Tabellen in einer Datenbank:

  • Elemente: Enthält eindeutige ID-Zeilen sowie verschiedene Felder.
  • some_chosen_data_in_order: Enthält ein Array-Feld namens id_items mit ID-Werten aus der Artikeltabelle, die in einer bestimmten Reihenfolge angeordnet sind.

Zum Abrufen von Daten aus Wenn Sie die Artikeltabelle basierend auf den Array-Feldwerten in some_chosen_data_in_order unter Beibehaltung ihrer Reihenfolge erstellen, können Sie Folgendes verwenden Abfrage:

SELECT t.*
FROM unnest(ARRAY[1,2,3,2,3,5]) item_id
LEFT JOIN items t on t.id=item_id

Diese Abfrage führt die folgenden Aktionen aus:

  • unnest(ARRAY[1,2,3,2,3,5]) : Entschachtelt das bereitgestellte Array in einzelne Elemente und erstellt eine Folge von Zeilen.
  • LEFT JOIN-Elemente werden aktiviert t.id=item_id: Verbindet die nicht verschachtelten Elemente basierend auf dem ID-Feld mit der Artikeltabelle.
  • Der LEFT JOIN stellt sicher, dass alle nicht verschachtelten Elemente zurückgegeben werden, auch wenn sie keine übereinstimmenden Zeilen im haben items-Tabelle.

Mit dieser Abfrage können Sie die Elemente in der durch das id_items-Array in der angegebenen Reihenfolge abrufen some_chosen_data_in_order Tabelle.

Das obige ist der detaillierte Inhalt vonWie verbinde ich PostgreSQL-Tabellen mit Array-Typen und behalte die Reihenfolge der Elemente bei?. 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