首页 > 数据库 > mysql教程 > 如何从表中选择具有特定角色(1、2 和 3)的用户 ID?

如何从表中选择具有特定角色(1、2 和 3)的用户 ID?

Patricia Arquette
发布: 2025-01-19 17:06:09
原创
741 人浏览过

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

检索具有多个角色(1、2 和 3)的用户 ID

本指南演示如何从具有 useridroleid 列的表中高效选择拥有角色 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,然后连接以查找相同的 useridroleid 2,最后 roleid 3。 INNER JOIN 确保仅返回具有所有三个角色的用户。 对于非常大的表,此方法可能比聚合方法效率低。

以上是如何从表中选择具有特定角色(1、2 和 3)的用户 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板