Maison > base de données > tutoriel mysql > Comment sélectionner des enregistrements SQL correspondant à plusieurs conditions sur la même colonne ?

Comment sélectionner des enregistrements SQL correspondant à plusieurs conditions sur la même colonne ?

Barbara Streisand
Libérer: 2025-01-21 16:08:11
original
331 Les gens l'ont consulté

How to Select SQL Records Matching Multiple Conditions on the Same Column?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal