Heim > Datenbank > MySQL-Tutorial > Wie kann ich Tupelpaare in der IN-Klausel von SQL effizient abfragen?

Wie kann ich Tupelpaare in der IN-Klausel von SQL effizient abfragen?

Patricia Arquette
Freigeben: 2024-12-31 15:29:14
Original
304 Leute haben es durchsucht

How Can I Efficiently Query for Tuple Pairs in SQL's IN Clause?

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))
Nach dem Login kopieren

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")
Nach dem Login kopieren

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)
);
Nach dem Login kopieren

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage