Intersecting Data in MySQL
Problème :
Dans MySQL, un utilisateur a besoin d'une méthode pour croiser les données de deux tables, « enregistrements » et « données », en fonction de plusieurs champs de la table « enregistrements ». Un exemple précédent utilisant INTERSECT dans un autre SGBD a renvoyé des résultats insatisfaisants.
Solution :
MySQL ne fournit pas de support direct pour l'opérateur INTERSECT. Cependant, il existe des approches alternatives pour obtenir la fonctionnalité souhaitée.
Une option consiste à utiliser une jointure interne :
SELECT DISTINCT records.id FROM records INNER JOIN data d1 on d1.id = records.firstname AND d1.value = "john" INNER JOIN data d2 on d2.id = records.lastname AND d2.value = "smith"
Cette requête joint la table "enregistrements" avec deux instances de " data", filtrant les lignes qui ont des valeurs correspondantes dans les deux jointures.
Une autre alternative est un in clause :
SELECT DISTINCT records.id FROM records WHERE records.firstname IN ( select id from data where value = 'john' ) AND records.lastname IN ( select id from data where value = 'smith' )
Cette approche sélectionne les lignes de la table « enregistrements » dont les champs « prénom » et « nom » correspondent aux valeurs de la table « données ».
Ces méthodes fournissent des moyens efficaces pour croiser des données dans MySQL en combinant des lignes de plusieurs tables en fonction de critères communs.
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!