我有两个表,每个表都有多行。我想把这两个“合并”到另一个表中,我该如何去做呢?
我已经尝试了INSERT INTO SELECT
,但它没有做我想要的事情(或者我可能做错了)。
我的表格是:
Versions
[version] VARCHAR(10)
Semesters
[id] INT
[semester] INT
[name] VARCHAR(150)
Versions_semesters
[semesterid] INT
[version] VARCHAR(10)
来自版本和学期的一些示例数据:
Versions
'Version1.0'
'Version1.5'
Semesters
1, 15, 'Autumn15'
2, 15, 'Spring15'
3, 15, 'Fall15'
4, 16, 'Autumn16'
5, 16, 'Spring16'
6, 16, 'Fall16'
我想要实现的是一个包含与semesterID相关的版本的表。
通过执行以下操作,我可以获得所需的子集:
SELECT id FROM semesters WHERE semester = 16;
SELECT * from Versions;
这两个子集我想INSERT INTO Versions_semesters
所以它看起来像这样:
Versions_semesters
4, 'Version1.0'
5, 'Version1.0'
6, 'Version1.0'
4, 'Version1.5'
5, 'Version1.5'
6, 'Version1.5'
任何人都有优雅(或丑陋)的解决方案吗?我想可以使用CROSS JOIN
,因为我提取了子集,但是如何同时获取子集然后加入它们?
答案 0 :(得分:3)
您正在寻找CROSS JOIN
,这是两张桌子的笛卡尔积。
INSERT INTO Table3
(ID,Version)
SELECT Id,Version
FROM Table1 CROSS JOIN Table2