Maison > base de données > tutoriel mysql > Comment sélectionner des ID utilisateur avec des rôles spécifiques (1, 2 et 3) dans un tableau ?

Comment sélectionner des ID utilisateur avec des rôles spécifiques (1, 2 et 3) dans un tableau ?

Patricia Arquette
Libérer: 2025-01-19 17:06:09
original
743 Les gens l'ont consulté

How to Select User IDs with Specific Roles (1, 2, and 3) from a Table?

Récupération des ID utilisateur avec plusieurs rôles (1, 2 et 3)

Ce guide montre comment sélectionner efficacement des ID utilisateur uniques possédant les rôles 1, 2 et 3 dans un tableau avec des colonnes userid et roleid. Nous explorerons deux méthodes de requête SQL efficaces.

Méthode 1 : requête agrégée avec clause HAVING

Cette approche utilise l'agrégation et le filtrage :

<code class="language-sql">SELECT userid
FROM userrole
WHERE roleid IN (1, 2, 3)
GROUP BY userid
HAVING COUNT(*) = 3;</code>
Copier après la connexion

La requête filtre les lignes où roleid est 1, 2 ou 3. Elle regroupe ensuite les résultats par userid et utilise HAVING COUNT(*) = 3 pour garantir que seuls les utilisateurs ayant les trois rôles sont inclus.

Méthode 2 : requête d'auto-JOIN

Alternativement, un auto-JOIN peut obtenir le même résultat :

<code class="language-sql">SELECT t1.userid
FROM userrole t1
INNER JOIN userrole t2 ON t1.userid = t2.userid AND t2.roleid = 2
INNER JOIN userrole t3 ON t1.userid = t3.userid AND t3.roleid = 3
WHERE t1.roleid = 1;</code>
Copier après la connexion

Cette requête joint la table userrole à elle-même trois fois. Il garantit qu'un userid a roleid 1, puis se joint pour trouver le même userid avec roleid 2 et enfin roleid 3. Le INNER JOIN garantit que seuls les utilisateurs avec les trois rôles sont renvoyés. Cette méthode pourrait être moins efficace que l'approche globale pour les très grandes tables.

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