所以我试图一次插入一小批行(< 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