gpt4 book ai didi

每个组内的 SQL 连接

转载 作者:行者123 更新时间:2023-11-29 14:13:07 26 4
gpt4 key购买 nike

假设我有 Table1(A, B, C) 和 Table2(B)

Table1:
A | B | C
------------------------
a1 b1 c1
a1 b2 c2
a2 b1 c3
Table2:
B
--
b1
b2
b3
b4

我想要的结果:

A   |   B   |   C
-------------------
a1 b1 c1
a1 b2 c2
a1 b3 [some default value]
a1 b4 [some default value]
a2 b1 c3
a2 b2 [some default value]
a2 b3 [some default value]
a2 b4 [some default value]

我该怎么做?

本质上,我需要一种方法来右外连接 table1 和 table2,但是“分组依据”列 A。

最佳答案

您可以通过CROSS JOINTable1A 的不同值与B< 的值来实现您想要的结果Table2 然后 LEFT JOIN 再次连接到 Table1 以获取相应的 C 值,使用 COALESCE 在没有匹配的 C 值时提供默认值:

SELECT t1.A, t2.B, COALESCE(t3.C, 'c0') AS C
FROM (SELECT DISTINCT A
FROM Table1) t1
CROSS JOIN Table2 t2
LEFT JOIN Table1 t3 ON t3.A = t1.A AND t3.B = t2.B

输出:

a   b   c
a1 b1 c1
a1 b2 c2
a1 b3 c0
a1 b4 c0
a2 b1 c3
a2 b3 c0
a2 b2 c0
a2 b4 c0

Demo on dbfiddle

关于每个组内的 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58812248/

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