使用具有大量id列表的IN子句更新表的问题

Alb*_*ert 1 sql t-sql sql-server sql-server-2005 in-clause

嗨我在尝试使用IN子句更新表时遇到问题,我有一个很大的客户端列表,应该更新4500+.

Update table 
set columnA = 'value'
where ID in ( biglistofids )  //biglistofids > 4500 ids
Run Code Online (Sandbox Code Playgroud)

我收到此错误"字符串或二进制数据将被截断."

我用相同的脚本尝试了更少的ids(2000)并且它运行良好.

我也试过使用临时表,但我得到了同样的错误.

  1. SELECT Id INTO tmpTable FROM dbo.table WHERE id IN (biglistofids) //create temporal table succesfully
  2. Update table set columnA = 'value' FROM table INNER JOIN tmpTable ON table.ID = tmpTable.ID

有没有办法处理这个,而不重复每2000条记录的代码?

提前致谢

GSe*_*erg 7

"String or binary data would be truncated."IN条款无关.

这意味着在这一行:

set columnA = 'value' 
Run Code Online (Sandbox Code Playgroud)

你设置columnA的东西太长了,无法容纳columnA.

也许某些人id的相应数据太长了,而且这些数据并不是你试过的第一个2000.