Maison >base de données >tutoriel mysql >Comment puis-je utiliser la clause IN pour interroger plusieurs colonnes dans SQL ?
Interrogation de plusieurs colonnes dans la clause IN en SQL
Lors de l'interrogation d'une table de base de données en fonction d'un ensemble de valeurs pour une colonne donnée, le La clause IN est une option pratique. Cependant, lorsqu'il s'agit de plusieurs colonnes, la clause IN devient inutilisable.
Pour surmonter ce défi, l'approche habituelle consiste à utiliser des jointures ou la clause EXISTS. Cependant, ces méthodes nécessitent à la fois que la table principale et les données de recherche soient présentes dans la base de données.
Considérons un cas d'utilisation dans lequel vous disposez d'une table User avec des colonnes (firstName, lastName, City) et vous devez récupérer les villes pour une liste de tuples (prénom, nom). Deux solutions potentielles émergent :
Solution 1 :
Construire une longue requête SELECT impliquant des conditions OR :
SELECT city FROM user WHERE (firstName=x and lastName=y) or (firstName=a and lastName=b) or ...
Solution 2 :
Créez une table intermédiaire contenant toutes les valeurs firstName et lastName et effectuez une jointure entre les Table utilisateur et table intermédiaire.
Solution alternative :
Heureusement, il existe un moyen simple d'interroger plusieurs colonnes à l'aide de la clause IN :
SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));
Démonstration SQLfiddle :
[Sqlfiddle Démo](
Cette solution résout efficacement le problème de l'interrogation de plusieurs colonnes dans la clause IN sans recourir aux jointures ou à la clause EXISTS. Il fournit une approche efficace et concise pour récupérer les données souhaitées.
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!