gpt4 book ai didi

sql - 如何从多个表中获取匹配的记录

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

如何从至少两个表中匹配的表中获取记录?例如,具有相同名称的所有帐户。可以有很多表。使用 PostgreSQL 作为数据库。

第一个表中有:

id   name
--------
11 acc1
12 acc4
13 acc5
14 acc9
15 acc10
16 acc1
17 acc1
18 acc4
19 acc10

在第二个表中有:

id   name
--------
21 acc4
22 acc6
23 acc8
24 acc10

在第三张表中有:

id   name
--------
31 acc1
32 acc7
33 acc9
34 acc8
35 acc10

结果应该是:

id-1  id-2  id-3
----------------
11 null 31
12 21 null
14 null 33
15 24 35
null 23 34

并且每一列中的id只能使用一次,条件可能会更复杂,例如,记录应该匹配两个字段。

最佳答案

您似乎想要一个完全连接:

select t1.id, t2.id, t3.id
from t1 full join
t2
using (name) full join
t3
using (name)
where ( (t1.id is not null)::int +
(t2.id is not null)::int +
(t3.id is not null)::int
) >= 2;

如果你不想重复,那么你可以这样做:

select t1.id, t2.id, t3.id
from (select name, min(id) as id from t1) t1 full join
(select name, min(id) as id from t2) t2
using (name) full join
(select name, min(id) as id from t3) t3
using (name)
where ( (t1.id is not null)::int +
(t2.id is not null)::int +
(t3.id is not null)::int
) >= 2;

关于sql - 如何从多个表中获取匹配的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093628/

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