2011-05-24 171 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

這是行不通的。您在多行查詢中使用聚合函數時犯的錯誤相同