ホームページ > データベース > mysql チュートリアル > 特定のロール (1、2、および 3) を持つユーザー ID をテーブルから選択するにはどうすればよいですか?

特定のロール (1、2、および 3) を持つユーザー ID をテーブルから選択するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-19 17:06:09
オリジナル
743 人が閲覧しました

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

複数のロール (1、2、および 3) を持つユーザー ID の取得

このガイドでは、userid 列と roleid 列を含むテーブルからロール 1、2、および 3 を持つ一意のユーザー ID を効率的に選択する方法を示します。 2 つの効果的な SQL クエリ方法を検討します。

方法 1: HAVING 句を使用した集計クエリ

このアプローチでは、集約とフィルタリングを使用します。

<code class="language-sql">SELECT userid
FROM userrole
WHERE roleid IN (1, 2, 3)
GROUP BY userid
HAVING COUNT(*) = 3;</code>
ログイン後にコピー

クエリは、roleid が 1、2、または 3 である行をフィルターします。次に、結果を userid でグループ化し、HAVING COUNT(*) = 3 を使用して、3 つのロールすべてを持つユーザーのみが含まれるようにします。

方法 2: 自己 JOIN クエリ

あるいは、自己結合でも同じ結果を達成できます。

<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>
ログイン後にコピー

このクエリは、userrole テーブルをそれ自体に 3 回結合します。 useridroleid 1 を持つことを確認し、次に結合して userid 2 と同じ roleid を見つけ、最後に roleid 3 を見つけます。 INNER JOIN は、3 つのロールすべてを持つユーザーのみが返されることを保証します。 この方法は、非常に大きなテーブルの場合、集計アプローチよりも効率が劣る可能性があります。

以上が特定のロール (1、2、および 3) を持つユーザー ID をテーブルから選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート