Trouver une alternative à l'intersection dans MySQL
L'opérateur INTERSECT de Microsoft SQL Server permet de récupérer des valeurs distinctes qui existent en commun entre deux ensembles de données. Malheureusement, MySQL ne fournit pas d'équivalent direct.
Syntaxe SQL Server :
INTERSECT SELECT value FROM dataset1 SELECT value FROM dataset2
Alternatives MySQL :
Au lieu de cela, MySQL propose des méthodes alternatives pour obtenir des résultats similaires :
Méthode 1 : INNER JOIN avec Distinct
Cette approche utilise un INNER JOIN entre les deux ensembles de données et applique le mot-clé DISTINCT pour éviter les doublons :
SELECT DISTINCT value FROM dataset1 INNER JOIN dataset2 USING (value);
Méthode 2 : Sous-requête avec IN
Une autre option consiste à utiliser une sous-requête avec IN pour vérifier la correspondance valeurs :
SELECT value FROM dataset1 WHERE value IN (SELECT value FROM dataset2);
Exemple :
Considérez les tables MySQL suivantes :
CREATE TABLE table1 (id INT, value VARCHAR(255)); CREATE TABLE table2 (id INT, value VARCHAR(255)); INSERT INTO table1 VALUES (1, 'A'), (2, 'B'), (3, 'B'); INSERT INTO table2 VALUES (1, 'B'); -- Method 1 SELECT DISTINCT value FROM table1 INNER JOIN table2 USING (value); -- Method 2 SELECT value FROM table1 WHERE value IN (SELECT value FROM table2);
Les deux méthodes renverront le résultat suivant :
+-------+ | value | +-------+ | B | +-------+
Lorsque vous travaillez avec des données non uniques, le mot-clé DISTINCT dans la méthode 1 ou l'utilisation de DISTINCT dans la sous-requête de la méthode 2 garantit que seules les valeurs uniques sont renvoyé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!