gpt4 book ai didi

SQL:SQL 异或

转载 作者:行者123 更新时间:2023-12-04 23:18:25 25 4
gpt4 key购买 nike

我有一张表格:

username | role
---------+------
name1 | internal
name1 | admin
name2 | internal
name3 | admin
name4 | external

我需要找到所有具有“内部”或“管理员”角色但没有两者(本质上是 XOR)的用户。如何在 SQL 中执行此操作?

产生类似于以下形式的查询将是完美的:
username | internal | admin
---------+----------+-------
name2 | 1 | 0
name3 | 0 | 1

如果它有帮助,我正在使用 Oracle 数据库

最佳答案

我会用条件聚合来解决这个问题:

select username,
max(case when role = 'internal' then 1 else 0 end) as internal,
max(case when role = 'admin' then 1 else 0 end) as admin
from t
where role in ('internal', 'admin')
group by username
having count(*) = 1;

如果名称/角色对可以重复,则使用 having count(distinct role) = 1 .

关于SQL:SQL 异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34204932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com