表1:
NAME
------
Clara
Bob
表2:
NUMBER
--------
555-1111
555-2222
555-3333
现在我想在表3中插入数据,这些数据显示了以下信息:
NAME NUMBER
----------------
Clara 555-1111
Clara 555-2222
Clara 555-3333
Bob 555-1111
Bob 555-2222
Bob 555-3333
我知道这可以使用两个不同的SQL查询来完成,但我想在单个查询中执行此操作。我在table1和table2之间没有任何关系。如何在单个insert语句中插入这些记录,而不使用WHILE
循环。
答案 0 :(得分:8)
使用cross join
生成数据:
select t1.name, t2.number
from t1 cross join t2;
您可以使用insert
或select into
将结果放入另一个表格中:
insert into t3(name, number)
select t1.name, t2.number
from t1 cross join t2;
具有讽刺意味的是,我无法通过两次查询来考虑合理的方法。
答案 1 :(得分:1)
您可以尝试以下查询:
SELECT
T1.Name,
T2.Number
FROM @tbl1 AS T1,@tbl2 AS T2
Order BY T1.Name
答案 2 :(得分:0)
INSERT INTO table3(NAME, NUMBER)
SELECT table1.NAME, t2.NAME
FROM table1 FULL JOIN table2
答案 3 :(得分:0)
;With Cte1(NAME)
AS
(
SELECT 'Clara' Union all
SELECT 'Bob'
)
,cte2 (NUMBER )
AS
(
SELECT '555-1111' UNION ALL
SELECT '555-2222' UNION ALL
SELECT '555-3333'
)
INSERT INTO Table3(NAME,NUMBER)
SELECT * FROM CTE1
CROSS JOIN CTE2