所以我試圖一次插入一小批行(< 10)到表中。數據是一個表值參數,但我需要添加一些額外的列,它是插入它之前所有行通用的。我試着做這兩種方式:從兩個其他表插入到第三個
INSERT INTO endTable
([col1],[col2],[commoncol1],[commoncol2])
SELECT
t.col1, t.col2, @CommonValue1, @CommonValue2
FROM startTable t
我還試圖通過把公共變量到一個臨時表變量來做到這一點,然後用交叉連接startTable它,就像這樣:
DECLARE @tempTable TABLE([temp1],[temp2])
INSERT INTO @tempTable(temp1,temp2) VALUES (@CommonValue1, @CommonValue2)
INSERT INTO endTable
([col1],[col2],[commoncol1],[commoncol2])
SELECT
a.col1, a.col2, b.temp1, b.temp2
FROM startTable a CROSS JOIN @tempTable b
這兩種嘗試給予相同的錯誤,當且僅當有startTable多行:
子查詢返回大於1倍的值。當 子查詢遵循=,!=,<,< =,>,> =或當子查詢用作 表達式時,這是不允許的。
我希望能夠完成這些插入而不訴諸循環,但我對SQL不是很熟悉,所以我不知道我是否運氣不好,或者如果我錯過了某些東西明顯。任何幫助將不勝感激。
由於您在第一次查詢中沒有任何這些運算符(=,!=,<, <= , >,> =),所以問題必須出現在其他位置。第一個版本應該可以工作。 – 2012-07-20 16:20:37