Verwendung von Tupeln in SQL IN-Klausel: Alternative zur String-Verkettung
In SQL können Sie mit der IN-Klausel ein Feld mit einer Menge vergleichen von Werten. Der Umgang mit Tupeln, die mehrere Werte enthalten, kann jedoch zu Herausforderungen führen.
Das Problem
Stellen Sie sich eine Tabelle mit den Feldern „group_id“ und „group_type“ vor und Sie möchten Datensätze mit einem bestimmten Tupel abfragen Paare, wie zum Beispiel:
SELECT * FROM mytable WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
Die unten vorgeschlagene Lösung zur Verwendung der Zeichenfolgenverkettung ist für große ineffizient Tabellen:
SELECT * FROM mytable WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
Standard-SQL-Lösung
Eine effizientere Lösung ist die Verwendung der Standard-SQL-92-Syntax für Tupel in der IN-Klausel mit dem Schlüsselwort VALUES:
SELECT * FROM mytable WHERE (group_id, group_type) IN ( VALUES ('1234-567', 2), ('4321-765', 3), ('1111-222', 5) );
Diese Syntax wird von mehreren SQL-Produkten unterstützt, darunter PostgreSQL und SQLite.
Hinweis zu Microsoft SQL Server
Zum Zeitpunkt des Schreibens (SQL Server 2022) wird diese Syntax in Microsoft SQL Server nicht unterstützt.
Das obige ist der detaillierte Inhalt vonWie kann ich Tupelpaare in der IN-Klausel von SQL effizient abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!