ホームページ > データベース > mysql チュートリアル > 指定された 3 つのロール ID をすべて持つユーザーを効率的に見つけるにはどうすればよいですか?

指定された 3 つのロール ID をすべて持つユーザーを効率的に見つけるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-19 17:02:08
オリジナル
1002 人が閲覧しました

How to Efficiently Find Users with All Three Specified Role IDs?

一意の条件を満たす行全体で値を選択します

この質問は、userid と roleid という 2 つの列を持つテーブルがあるシナリオについて説明しています。目標は、指定された 3 つのロール ID をすべて持つ一意のユーザー ID を取得することです。

1 つの方法は、集約とフィルタリングを組み合わせることです。

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

このクエリは、ユーザー ID ごとに結果をグループ化し、ユーザー ID ごとに各ロール ID の出現数をカウントします。 HAVING 句により、3 つの異なるロール ID を持つユーザー ID のみが選択されるようになります。

ただし、特に大規模なデータセットを扱う場合は、結合を使用する別のアプローチの方が効率的である可能性があります。

<code class="language-sql">SELECT t1.userid
FROM userrole t1
JOIN userrole t2 ON t1.userid = t2.userid AND t2.roleid = 2
JOIN userrole t3 ON t2.userid = t3.userid AND t3.roleid = 3
AND t1.roleid = 1</code>
ログイン後にコピー

このクエリは、ネストされた結合を利用して、指定されたロール ID に基づいてユーザー ID を選択します。外部結合条件は、各ユーザー ID の各ロール ID の存在をチェックし、最後の AND 条件は、選択したユーザー ID が指定された 3 つのロール ID をすべて持っていることを確認します。

データの分散と基盤となるデータベース システムのパフォーマンス特性に応じて、どちらのアプローチがより適切な場合もあります。両方の方法をテストして、特定のシナリオに最適なソリューションを決定することをお勧めします。

以上が指定された 3 つのロール ID をすべて持つユーザーを効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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