SQL使用具有多个值的变量作为要插入的值之一将多行插入表中

时间:2014-02-14 17:46:14

标签: sql sql-server

我想

INSERT INTO TABLE (col1, col2, col3) [col1 through col3 are non null columns]
VALUES (val1,val2,val3)

所有的val都是uniqueidentifiers。我正在做的是更新一个表,该表具有val1的唯一成员ID和val2的唯一带状密钥以及由val3的密钥创建的唯一。这在UI方面的作用是为成员分配功能区,并且必须由成员创建。我想要做的是将val2和val3分配给100个成员。所以我想知道我是否可以执行一个返回100个成员id列表的select查询,并将id列表分配给我将用于val1的变量。

尝试使用以下方法获取分配了所有ID的变量时:

declare @members uniqueidentifier
set @members  = (
Select Members.MemberID from Members
where departmentkey = 'D22CF614-721B-4C15-ABF6-02541CDC7502') 

[这将返回100个成员的特定部门的所有成员]

我收到此错误:

Msg 512, Level 16, State 1, Line 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

所以我的第一步是找出如何让这个变量@members分配成员ID列表。 然后第二步是为所有成员分配这样的功能区:

INSERT INTO TABLE (col1, col2, col3) 
VALUES (@members,val2,val3)

有没有办法做我想做的事情? 如果您需要更多信息,请与我们联系。 感谢

1 个答案:

答案 0 :(得分:4)

尝试这样做:

INSERT INTO TABLE (col1, col2, col3) 
    Select Members.MemberID, val2,val3
    from Members
    where departmentkey = 'D22CF614-721B-4C15-ABF6-02541CDC7502';

不要打扰变量。