Sélectionnez les enregistrements en utilisant plusieurs critères de correspondance sur la même colonne
En SQL, sélectionner des enregistrements qui remplissent plusieurs conditions sur la même colonne peut être un défi. Considérez le scénario suivant :
Vous disposez d'une table qui stocke les balises utilisateur. Chaque entrée contient un ID de contact, une balise et un type de balise. Il vous suffit de récupérer les identifiants de contact qui correspondent à toutes les balises spécifiées dans le formulaire de recherche.
La requête que vous avez proposée, dans laquelle vous utilisez plusieurs conditions avec le même nom de colonne, ne renverra aucun résultat car SQL l'interprète comme une seule condition. Pour surmonter ce problème, vous pouvez faire l'une des deux choses suivantes :
Méthode 1 : Utiliser GROUP BY et HAVING
Cette méthode consiste à regrouper les résultats par identifiant de contact puis à vérifier si le nombre de balises distinctes correspondant aux critères de recherche est égal au nombre de balises spécifié.
<code class="language-sql">SELECT contact_id FROM your_table WHERE flag IN ('Volunteer', 'Uploaded', ...) GROUP BY contact_id HAVING COUNT(*) = 2 -- // 必须与WHERE flag IN (...)列表中的数量匹配</code>
Méthode 2 : Utiliser la connexion
Cette méthode consiste à créer plusieurs connexions pour chaque condition.
<code class="language-sql">SELECT T1.contact_id FROM your_table T1 JOIN your_table T2 ON T1.contact_id = T2.contact_id AND T2.flag = 'Uploaded' -- // 如果需要,可以添加更多连接 WHERE T1.flag = 'Volunteer'</code>
Le choix de la méthode dépend du nombre de tags et du nombre de correspondances attendu. Pour les longues listes de balises avec un petit nombre de correspondances, la première approche (GROUP BY et HAVING) peut être plus rapide. Toutefois, pour les listes de balises plus courtes comportant de nombreuses correspondances, la deuxième approche (concaténation) peut être plus efficace.
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!