擷取具有多個角色(1、2 和 3)的使用者 ID
本指南示範如何從具有 userid
和 roleid
列的表中高效選擇擁有角色 1、2 和 3 的唯一使用者 ID。 我們將探索兩種有效的 SQL 查詢方法。
方法一:使用 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
確保僅包含具有所有三個角色的使用者。
方法二:自連線查詢
或者,自 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
表與其自身連接三次。 它確保 userid
具有 roleid
1,然後連接以查找相同的 userid
和 roleid
2,最後 roleid
3。 INNER JOIN
確保僅傳回具有所有三個角色的使用者。 對於非常大的表,此方法可能比聚合方法效率低。
以上是如何從表中選擇具有特定角色(1、2 和 3)的使用者 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!