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
Patricia ArquetteOriginal
2024-12-31 15:29:14312Durchsuche

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))

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!

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