複数のロール (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 回結合します。 userid
が roleid
1 を持つことを確認し、次に結合して userid
2 と同じ roleid
を見つけ、最後に roleid
3 を見つけます。 INNER JOIN
は、3 つのロールすべてを持つユーザーのみが返されることを保証します。 この方法は、非常に大きなテーブルの場合、集計アプローチよりも効率が劣る可能性があります。
以上が特定のロール (1、2、および 3) を持つユーザー ID をテーブルから選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。