Sql 更新列信息

Sql 更新列信息,sql,sql-update,Sql,Sql Update,我正在尝试将Mgrstat列中的信息更新为3,并希望批量输入信息。事实上,我必须使用“=”并分别输入每个AppID,但我宁愿一次输入几个。下面的查询显示了我使用“in”的尝试,但也不起作用。我在“in”这个关键字附近得到了“不正确的语法” 有什么想法吗?谢谢大家 declare @appid as int declare @mgrstat as int set @appid in ('10995', '11201', '9523', '9558', '9666', '10069', '1054

我正在尝试将Mgrstat列中的信息更新为3,并希望批量输入信息。事实上,我必须使用“=”并分别输入每个AppID,但我宁愿一次输入几个。下面的查询显示了我使用“in”的尝试,但也不起作用。我在“in”这个关键字附近得到了“不正确的语法”

有什么想法吗?谢谢大家

declare @appid as int
declare @mgrstat as int

set @appid in ('10995',
'11201',
'9523',
'9558',
'9666',
'10069',
'10547',
'10548',
'9702',
'10698',
'9754',
'10161',
'10162',
'11240',
'11241',
'9553',
'10848',
'10667',
'9383',
'10709',
'9696',
'10053',
'10702')
set @mgrstat = 3


update [Compensation].[dbo].[dev_RPT_Approval]
set Mgr_Stat = @mgrstat
 FROM [Compensation].[dbo].[dev_RPT_Approval]
  where @appid = App_Id

  select *
  from [Compensation].[dbo].[dev_RPT_Approval]
  where @appid = App_Id

如果我理解正确,并且您希望所有的
mgr\u stats
都是3,其中app\u id在您的问题中提供的列表中,那么您可以通过以下几种方式实现:

update [Compensation].[dbo].[dev_RPT_Approval]
set Mgr_Stat = 3
where app_id in (
'10995',
'11201',
'9523',
'9558',
'9666',
'10069',
'10547',
'10548',
'9702',
'10698',
'9754',
'10161',
'10162',
'11240',
'11241',
'9553',
'10848',
'10667',
'9383',
'10709',
'9696',
'10053',
'10702'
)
或(使用表变量的sql server)

关于您发布的代码,需要注意以下几点:

declare @appid as int
set @appId in ...
有几件事-@appId被声明为一个整数,这意味着它是一个标量值(不能是一个集合)-对于值集合,您可以使用一个表变量,就像我在第二个如何完成问题的示例中所做的那样

另外,因为您将变量设置为int,所以我假设您的ID是int类型,不需要引号

而不是:

where app_id in (
'10995',
....
)
你可以做:

where app_id in (
10995,
....
)

这是您需要的SQL:

update dev_RPT_Approval set Mgr_Stat=3 
where designation
in ('10995',
'11201',
'9523',
'9558',
'9666',
'10069',
'10547',
'10548',
'9702',
'10698',
'9754',
'10161',
'10162',
'11240',
'11241',
'9553',
'10848',
'10667',
'9383',
'10709',
'9696',
'10053',
'10702')
你能试试这个吗? 也许对你有用,伙计。在这里,您将使用“=”而不是“中的”传递多个值


我没有看到任何查询分隔符,例如
您对问题的措辞让我有点困惑,所以我想澄清一下,您是否试图将所有
mgr_stat
s设置为3,其中app_id位于
@appId
中的appId列表中?这是sql server吗?它看起来像sql服务器这是sql。我试图做的是构建查询,这样我就不必单独输入每个App_ID,因为我有一个很大的数字。“SQL”不是一个RDBMS,很多RDBMS都使用SQL。是sql server、mysql、postgres还是oracle?它看起来像sql server,但您的问题并没有被标记为sql server(而且应该是这样),看起来是sql server做的!谢谢Hi @ MitchellHeath如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。这不起作用,请注意OPs变量
@appid
是标量,不能包含多个值。
update dev_RPT_Approval set Mgr_Stat=3 
where designation
in ('10995',
'11201',
'9523',
'9558',
'9666',
'10069',
'10547',
'10548',
'9702',
'10698',
'9754',
'10161',
'10162',
'11240',
'11241',
'9553',
'10848',
'10667',
'9383',
'10709',
'9696',
'10053',
'10702')
  update [Compensation].[dbo].[dev_RPT_Approval]
    set Mgr_Stat = @mgrstat
     FROM [Compensation].[dbo].[dev_RPT_Approval]
      where App_Id IN(@appid)