gpt4 book ai didi

sql - 在具有不同名称的列上连接表但在结果中产生单列

转载 作者:搜寻专家 更新时间:2023-10-30 21:52:41 24 4
gpt4 key购买 nike

我不确定如何简洁地提出问题来描述我想解决的问题。
我有以下两个表:
表 1

[idA] [numA]
NULL 8
1 10
2 15
3 16

表 2

[idB] [numB]
2 14
3 30
4 32

现在,我不确定如何制定 T-Sql 查询以产生以下结果:

[id] [numA] [numB]
NULL 8 0
1 10 0
2 15 14
3 16 30
4 0 32

对于如何解决这个问题有什么建议吗?

更新:


如果再加入一个表(idC、numC),@AdaTheDev 的脚本会不会有任何问题?在那种情况下,最好的解决方案是什么?问题是我有 15 个要加入一个表,它们应该按 id 分组并有 15 个对应的 numX 列。

最佳答案

像这样的事情,应该做

SELECT ISNULL(t1.idA, t2.idB) AS id, 
ISNULL(t1.numA, 0) AS numA,
ISNULL(t2.NumB, 0) AS numB
FROM table1 t1
FULL OUTER JOIN table2 t2 ON t1.idA = t2.idB OR t1.ida IS NULL AND t2.idb IS NULL

更新
注意我在连接中添加了一个 OR 条件来处理 idA 和 idB 为 NULL 的情况,以给出一个结果

完整测试脚本(在表2中添加了NULL id记录):

DECLARE @Table1 TABLE (ida integer, numA INTEGER)
DECLARE @Table2 TABLE (idb integer, numb INTEGER)

INSERT @Table1 ([ida], [numA])
VALUES (NULL, 8), (1, 10), (2, 15), (3, 16)

INSERT @Table2 ([idb], [numb])
VALUES (NULL, 9), (2, 14), (3, 30), (4, 32)

SELECT ISNULL(t1.idA, t2.idB) AS id,
ISNULL(t1.numA, 0) AS numA,
ISNULL(t2.NumB, 0) AS numB
FROM @table1 t1
FULL OUTER JOIN @table2 t2 ON t1.idA = t2.idB OR t1.ida IS NULL AND t2.idb IS NULL

关于sql - 在具有不同名称的列上连接表但在结果中产生单列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10549952/

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