鉴于两个表:
T_A
Key_A A_1
1 A
2 B
3 C
T_B
Key_B Key_A
10 1
10 2
10 3
20 1
20 2
30 1
我想生成以下输出集
T_X
Key_B Key_A A_1
10 1 A
10 2 B
10 3 C
20 1 A
20 2 B
20 3 C
30 1 A
30 2 B
30 3 C
或者,表T_B中的某一行是否包含列KEY_A的值,提供/返回该行,就像它在那里一样。
是否有任何SQL可以返回此内容?
答案 0 :(得分:1)
您的陈述
或者,表T_B中的某一行是否包含列KEY_A的值,提供/返回该行,就像它在那里一样。
表示如果有值,则返回一行 - 或者不存在。这可以减少为返回值而不管甚至不检查。这使事情变得简单,因为您可以执行cross join
,它返回两个表的每个可能组合。
以下内容将为您提供所需的结果:
select distinct T_B.Key_B, T_A.Key_A, T_A.A_1
from T_B
cross join T_A
但它可能更有效,更清楚你正在做什么,获得所有T_B.Key_B
,然后将其加入另一个表,给出:
select sq.Key_B, T_A.Key_A, T_A.A_1
from (select distinct Key_B from T_B) sq
cross join T_A
答案 1 :(得分:0)
你也可以使用内连接: -
select T_A.A_1,T_B.Key_B,T_B.Key_A
from T_A inner join T_B
on T_A.Key_A=T_B.Key_A