Maison > base de données > tutoriel mysql > Comment puis-je rechercher efficacement des paires de tuples dans la clause IN de SQL ?

Comment puis-je rechercher efficacement des paires de tuples dans la clause IN de SQL ?

Patricia Arquette
Libérer: 2024-12-31 15:29:14
original
334 Les gens l'ont consulté

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

Utilisation de tuples dans la clause SQL IN : Alternative à la concaténation de chaînes

En SQL, la clause IN permet de comparer un champ avec un ensemble de valeurs. Cependant, la gestion de tuples contenant plusieurs valeurs peut poser des problèmes.

Le problème

Considérez une table avec les champs group_id et group_type, et vous souhaitez rechercher des enregistrements avec un tuple spécifique paires, telles que :

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (("1234-567", 2), ("4321-765", 3), ("1111-222", 5))
Copier après la connexion

La solution proposée pour utiliser la concaténation de chaînes, comme ci-dessous, est inefficace pour les grands tables :

SELECT *
FROM mytable
WHERE group_id + STR(group_type, 1) IN ("1234-5672", "4321-7653", "1111-2225")
Copier après la connexion

Solution SQL standard

Une solution plus efficace consiste à utiliser la syntaxe SQL-92 standard pour les tuples dans la clause IN avec le mot-clé VALUES :

SELECT *
FROM mytable
WHERE (group_id, group_type) IN (
    VALUES ('1234-567', 2), 
           ('4321-765', 3), 
           ('1111-222', 5)
);
Copier après la connexion

Cette syntaxe est prise en charge par plusieurs produits SQL, notamment PostgreSQL et SQLite.

Remarque sur Microsoft SQL Server

Au moment de la rédaction (SQL Server 2022), cette syntaxe n'est pas prise en charge dans Microsoft SQL Server.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal