gpt4 book ai didi

sql - 从多个表中选择,消除重复值

转载 作者:行者123 更新时间:2023-11-29 14:28:41 25 4
gpt4 key购买 nike

我有这些表和值:

Person                 Account                
------------------ -----------------------
ID | CREATED_BY ID | TYPE | DATA
------------------ -----------------------
1 | 1 | T1 | USEFUL DATA
2 | 2 | T2 |
3 | 3 | T3 |
4 | 4 | T2 |



Person_account_link
--------------------------
ID | PERSON_ID | ACCOUNT_ID
--------------------------
1 | 1 | 1
2 | 1 | 2
3 | 2 | 3
4 | 3 | 4

我想选择所有 T1 账户类型的人并获取数据列,对于其他人,他们应该在结果中没有任何账户信息。

(我注意到人 1 有两个帐户:account_id_1 和 account_id_2 但必须只显示一行(如果存在则为 T1 类型的优先级,否则为空)

结果应该是:

Table1             
-----------------------------------------------------
PERSON_ID | ACCOUNT_ID | ACCOUNT_TYPE | ACCOUNT_DATA
-----------------------------------------------------
1 | 1 | T1 | USEFUL DATA
2 | NULL | NULL | NULL
3 | NULL | NULL | NULL
4 | NULL | NULL | NULL

最佳答案

你可以做条件聚合:

SELECT p.id,
MAX(CASE WHEN a.type = 'T1' THEN a.id END) AS ACCOUNT_ID,
MAX(CASE WHEN a.type = 'T1' THEN 'T1' END) AS ACCOUNT_TYPE,
MAX(CASE WHEN a.type = 'T1' THEN a.data END) AS ACCOUNT_DATA
FROM person p LEFT JOIN
Person_account_link pl
ON p.id = pl.person_id LEFT JOIN
account a
ON pl.account_id = a.id
GROUP BY p.id;

关于sql - 从多个表中选择,消除重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54868412/

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