我现在经常光顾这个网站一段时间,但这一次,我没有找到任何关于这个问题的答案,所以这里有。
我有两张桌子没有任何PK / FK或其他关系。我想要做的是以下几点。
表1
Column A
A
B
C
表2
Column B
1
2
3
期望的结果:
合并表
Column A Column B
A 1
A 2
A 3
B 1
B 2
B 3
C 1
C 2
C 3
相当多,对于第一个表中的每个值,都会附加第二个表的完整列表,直到不再存在。
我希望这对我想要实现的目标有意义。
谢谢!
答案 0 :(得分:4)
您需要使用cross join
:
SELECT ColumnA, ColumnB
FROM table1
CROSS JOIN table2
ORDER BY ColumnA;
答案 1 :(得分:1)
这应该这样做:
SELECT ColumnA, ColumnB
FROM TableA
CROSS JOIN TableB
答案 2 :(得分:1)
在其他答案中提到,你会想要使用CROSS JOIN
,这将为你提供两个表的笛卡尔积:
SELECT t1.columnA, t2.columnB
FROM t1 CROSS JOIN t2;
您可能会在旧代码中看到这种情况,如下所示:
SELECT t1.columnA, t2.columnB
FROM t1, t2;
“笛卡尔积”是一个来自数学的术语:两组X和Y的笛卡尔积(关系数据库中的表实际上是集)是所有有序对(x,y)的集合,其中x在X和y中Y.在您的情况下,您将获得集合all values of column A in t1
和all values of column B in t2
的笛卡尔积。
希望这有帮助。
答案 3 :(得分:0)
SELECT *
FROM Table1
CROSS JOIN Table2