2011-05-24 117 views
-1

以下查询是否会插入与子查询的结果集中的行相同数量的行?如果没有,我怎样才能插入n行,其中n是子查询的结果集中的行数?SELECT语句作为INSERT INTO语句中的子查询

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

@x=5 
+1

您是否尝试过? – AllenG 2011-05-24 18:46:06

回答

3

不会。它只会插入最多1行。如果你想插入多行,你需要像

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

注意,有没有values条款,以及@x已经融入了SELECT查询

2

摆脱VALUES子句。您的查询变为:

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

试试这种方式。

INSERT INTO A 
    (x, y) 
    SELECT @x, B.z 
     FROM B 
1
DECLARE @X int = 5 

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

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

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

这是行不通的。您在多行查询中使用聚合函数时犯的错误相同