以下查询是否会插入与子查询的结果集中的行相同数量的行?如果没有,我怎样才能插入n行,其中n是子查询的结果集中的行数?SELECT语句作为INSERT INTO语句中的子查询
INSERT INTO A (x, y)
VALUES (@x, SELECT B.z FROM B)
@x=5
以下查询是否会插入与子查询的结果集中的行相同数量的行?如果没有,我怎样才能插入n行,其中n是子查询的结果集中的行数?SELECT语句作为INSERT INTO语句中的子查询
INSERT INTO A (x, y)
VALUES (@x, SELECT B.z FROM B)
@x=5
不会。它只会插入最多1行。如果你想插入多行,你需要像
INSERT INTO A (x,y) SELECT @X, B.z FROM b
注意,有没有values
条款,以及@x已经融入了SELECT
查询
摆脱VALUES子句。您的查询变为:
INSERT INTO A (x, y) SELECT @X, B.z FROM B
试试这种方式。
INSERT INTO A
(x, y)
SELECT @x, B.z
FROM B
DECLARE @X int = 5
INSERT INTO A
(
x,
y
)
SELECT
@X,
B.Z
FROM B
如果你想获得的所有值,您可以将其修改为:
INSERT INTO A (x, y)
SELECT @x, B.z
FROM B
这是行不通的。您在多行查询中使用聚合函数时犯的错误相同
您是否尝试过? – AllenG 2011-05-24 18:46:06