Maison >base de données >tutoriel mysql >Comment puis-je interroger efficacement une table en utilisant plusieurs colonnes dans une clause IN ?

Comment puis-je interroger efficacement une table en utilisant plusieurs colonnes dans une clause IN ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-29 02:12:10381parcourir

How Can I Efficiently Query a Table Using Multiple Columns in an IN Clause?

Interrogation d'une table avec plusieurs colonnes dans une clause IN

En SQL, l'utilisation de la clause IN vous permet de filtrer les données en fonction d'un ensemble de valeurs pour une colonne spécifique. Cependant, utiliser la clause IN avec plusieurs colonnes peut s'avérer difficile.

Pour surmonter cette limitation, diverses solutions ont été proposées, notamment l'utilisation de jointures ou de la clause EXISTS. Cependant, ces méthodes nécessitent que la table principale et les données de recherche résident dans la base de données.

Solutions alternatives

Pour les cas où la table principale et les données de recherche sont toutes deux non disponible dans la base de données, des solutions alternatives peuvent être utilisées :

  • Construire une sélection complexe Requête :
    Créez une requête de sélection qui spécifie des conditions individuelles pour chaque paire de valeurs, telles que :
SELECT city FROM user WHERE (firstName='x' AND lastName='y') OR (firstName='a' AND lastName='b') OR ...
  • Créez une table intermédiaire et rejoignez :
    Téléchargez les valeurs de recherche dans une table intermédiaire et joignez cette table à la table principale pour filtrer les data.

Solution préférée

La solution préférée dépend du cas d'utilisation spécifique :

  • Pour les petits ensembles de données, le complexe L'approche de requête de sélection peut être suffisante.
  • Pour les ensembles de données plus volumineux, la table intermédiaire et la méthode de jointure offrent des améliorations performances.

Clause IN avec plusieurs colonnes

Cependant, une solution plus récente est apparue qui simplifie le processus d'interrogation de plusieurs colonnes à l'aide de la clause IN :

SELECT city FROM user WHERE (firstName, lastName) IN (('a', 'b'), ('c', 'd'));

Cette approche vous permet de spécifier plusieurs colonnes entre parenthèses de la clause IN, ce qui rend plus pratique et efficace le filtrage des données en fonction de combinaisons de valeurs.

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!

Déclaration:
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