Requête SQL : intersections efficaces pour plusieurs balises
Lorsque vous travaillez avec une table de balises affectées à un contenu, il est courant d'avoir besoin d'identifier le contenu qui correspond à des combinaisons de balises spécifiques. Une approche naïve utilisant des sous-requêtes imbriquées peut rapidement devenir lourde pour plusieurs balises.
Pour réaliser cette intersection efficacement, nous pouvons exploiter la requête SQL suivante :
SELECT contentID FROM tags WHERE tagID in (334, 338, 342) GROUP BY contentID HAVING COUNT(DISTINCT tagID) = 3;
Explication :
En remplaçant la balise spécifique ID avec une liste paramétrée et en ajustant le nombre dans la clause HAVING, cette requête devient généralisable pour n'importe quel nombre de balises :
SELECT contentID FROM tags WHERE tagID in (...) --taglist GROUP BY contentID HAVING COUNT(DISTINCT tagID) = ... --tagcount;
Cette approche optimisée fournit une solution robuste pour trouver efficacement l'intersection de plusieurs balises dans un tableau.
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!