所以我试图一次将一小批行(<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 并不是非常熟悉,所以我不知道我是否不走运,或者我是否遗漏了一些明显的东西。任何帮助将不胜感激。