SELECT语句作为INSERT INTO语句中的子查询

时间:2011-05-24 18:44:52

标签: sql database sql-server-2008 database-design

以下查询是否会插入与子查询的结果集中的行一样多的行?如果没有,我如何插入n行,其中n是子查询的结果集中的行数?

INSERT INTO A (x, y)
VALUES (@x, SELECT B.z FROM B)

@x=5

6 个答案:

答案 0 :(得分:3)

没有。它最多只插入一行。如果要插入多行,则需要类似

的内容
INSERT INTO A (x,y) SELECT @X, B.z FROM b

请注意,没有values子句,并且@x已集成到SELECT查询中

答案 1 :(得分:3)

如果您想获得所有值,可以将其修改为:

INSERT INTO A (x, y) 
SELECT @x, B.z 
FROM B

答案 2 :(得分:2)

摆脱VALUES条款。您的查询变为:

INSERT INTO A (x, y) SELECT @X, B.z FROM B

答案 3 :(得分:2)

以这种方式试试。

INSERT INTO A
    (x, y)
    SELECT @x, B.z
        FROM B

答案 4 :(得分:1)

DECLARE @X int = 5

INSERT INTO A
(
    x,
    y
)
SELECT    
    @X,
    B.Z
FROM B

答案 5 :(得分:1)

它不会起作用。您在使用多行查询的聚合函数时犯了同样的错误