首页 > 解决方案 > 更新 SQL 中的多个值

问题描述

我想做这样的事情

Update Tenancy
set Text5 = ('55', '57', '89')
where PK in ('1', '2', '3')

我正在使用 1000 PKs 进行此操作,因此只是在寻找一种快速且安全的方法。

这是我正在寻找的输出:

pk      text5
--------------
1       55
2       57
3       89

标签: sqlsql-server

解决方案


使用这样的表值构造函数:

WITH 
T AS (SELECT * FROM (VALUES ('1', '55'),
                            ('2', '57'),
                            ('3', '89')
                    ) AS TBL (pk, text5)
      ) 
UPDATE TNC
SET    Text5 = T.text5
FROM   Tenancy AS TNC
       JOIN T ON TNC.PK = T.PK;

当心......这个构造函数被限制为正好 1000 个元组!


推荐阅读