SQL Server:从多个表中INSERT INTO,它们之间没有任何关系

时间:2017-04-11 12:12:35

标签: sql sql-server

表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循环。

4 个答案:

答案 0 :(得分:8)

使用cross join生成数据:

select t1.name, t2.number
from t1 cross join t2;

您可以使用insertselect 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