gpt4 book ai didi

sql - 如果 condition1 为真,则将一个表与一个表连接,如果条件 1 为假,则与另一个表连接?

转载 作者:行者123 更新时间:2023-11-29 11:30:39 24 4
gpt4 key购买 nike

我有以下表格:

User_Group

id group_id group_type
------------------------
1 100 A
1 100 B
2 101 B
2 102 A

Group_A

id name
---------
100 A
101 B
102 C

Group_B

id name
---------
100 D
101 E
102 F

我想要所有用户的组名(使用array.agg())。如果用户的组类型 = A,我们必须从 A 组获取组名;如果用户的组类型 = B,我们必须从 B 组获取组名。结果应该是:

userid  groups
--------------
1 A,D
2 E,C

我创建了一个 fiddle为此,并给出了一个使用 2 个单独查询的并集的解决方案。是否可以在没有联合的情况下完成,我可以通过 user_groupsgroup_Agroup_B 的单个连接来决定从哪个表中选择组名 ?

最佳答案

select ug.id, array_agg(
case ug.group_type
when 'A' then g_a.name
when 'B' then g_b.name
else 'N/A'
end)
from user_groups ug
left outer join group_A g_a on ug.group_id = g_a.id
left outer join group_B g_b on ug.group_id = g_b.id
group by ug.id

SQL Fiddle Example

关于sql - 如果 condition1 为真,则将一个表与一个表连接,如果条件 1 为假,则与另一个表连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13032666/

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