gpt4 book ai didi

mysql - 在sqlite中合并多个表

转载 作者:行者123 更新时间:2023-11-30 00:55:05 26 4
gpt4 key购买 nike

假设我创建了 3 个表并像这样填充它们:

CREATE TABLE t1(sn INT PRIMARY KEY, val TEXT);
INSERT INTO t1 (sn, val) VALUES (1,'Bobby');
INSERT INTO t1 (sn, val) VALUES (2,'Fred');
INSERT INTO t1 (sn, val) VALUES (3,'Ann');

t1 看起来像这样

sn     val
1 Bobby
2 Fred
3 Ann

CREATE TABLE t2(sn INT PRIMARY KEY, val INT);
INSERT INTO t2 (sn, val) VALUES (2,5);
INSERT INTO t2 (sn, val) VALUES (4,72);
INSERT INTO t2 (sn, val) VALUES (5,7);

t2 看起来像这样

sn     val
2 5
4 72
5 7

CREATE TABLE t3(sn INT PRIMARY KEY, val TEXT);
INSERT INTO t3 (sn, val) VALUES (1,'A');
INSERT INTO t3 (sn, val) VALUES (5,'B');
INSERT INTO t3 (sn, val) VALUES (7,'C');
INSERT INTO t3 (sn, val) VALUES (9,'D');

t3 看起来像这样

sn     val
1 A
5 B
7 C
9 D

现在我想创建一个名为“merged”的新表,并希望它看起来像这样

sn    t1.val    t2.val    t3.val
1 Bobby A
2 Fred 5
3 Ann
4 72
5 7 B
7 C
9 D

我正在使用 sqlite3 并尝试使用左连接和联合的组合,但我只能对不超过 2 个表执行此操作。我有很多这样的表,并且想通过它们的主键连接所有表。我们将非常感谢您的建议并期待您的回复。

最佳答案

在子查询中使用 UNION 来获取所有 sn 值,然后对每个基表使用一堆左连接:

CREATE TABLE merged AS
SELECT tAll.sn,
t1.val,
t2.val,
t3.val
FROM (SELECT sn FROM t1
UNION
SELECT sn FROM t2
UNION
SELECT sn FROM t3) AS tAll
LEFT JOIN t1 ON tAll.sn = t1.sn
LEFT JOIN t2 ON tAll.sn = t2.sn
LEFT JOIN t3 ON tAll.sn = t3.sn

关于mysql - 在sqlite中合并多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20642115/

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