我有两个桌子。表A和B。表A的数据如下:
+---+---+---+
| a | b | c |
+---+---+---+
| 2 | 1 | 8 |
| 3 | 6 | 7 |
| 4 | 5 | 9 |
+---+---+---+
表B为:
+----+----+
| e | f |
+----+----+
| 11 | 14 |
+----+----+
我想创建一个SQL查询,该查询将为我提供输出,其中我保留了表A中的所有记录,而保留了表B中的一个记录,但是将显示表B中每一列中该记录的值在表A的所有记录中。数据集的结果看起来像这样:
+---+---+---+----+----+
| a | b | c | e | f |
+---+---+---+----+----+
| 2 | 1 | 8 | 11 | 14 |
| 3 | 6 | 7 | 11 | 14 |
| 4 | 5 | 9 | 11 | 14 |
+---+---+---+----+----+
我不确定SQL如何处理在表结果上附加这样的记录。我认为有一种方法可以从表B中调出这些字段,并与表A进行某种形式的联合?如果还有另一个问题的答案,请将该问题标记为已回答。谢谢。
答案 0 :(得分:2)
您可以尝试使用交叉联接
select a, b, c, d, f
from A
cross join B
答案 1 :(得分:1)
根据定义,SQL表是无序的,并且没有行标识符。您可以使用row_number()
创建行标识符,然后将其用于join
:
select a.a, a.b, a.c, b.e, b.f
from (select a.*, row_number() over (order by a) as seqnum
from a
) a join
(select b.*, row_number() over (order by e) as seqnum
from b
) b
on a.seqnum = b.seqnum;
这假定每个表格的第一列都定义了顺序,如示例数据中所示。