我正在运行 SQL Server,需要更新数百个条目。列A具有唯一值,根据这些值,我需要批量更新同一表中列B的所有不同值。本质上,我正在寻找一种以批量方式执行以下操作的方法:
UPDATE table
set column B = 'value'
where column A = 'unique value'
我正在运行 SQL Server,需要更新数百个条目。列A具有唯一值,根据这些值,我需要批量更新同一表中列B的所有不同值。本质上,我正在寻找一种以批量方式执行以下操作的方法:
UPDATE table
set column B = 'value'
where column A = 'unique value'
这是你期望的吗?
UPDATE table
set column B = case when column A = 5 then 'unique string' end;
BEGIN
DECLARE c_a, c_b TEXT;
DECLARE c_ab CURSOR FOR
SELECT column_a,column_b FROM c_table;
OPEN c_ab;
LOOP
FETCH c_ab into c_ca, c_cb;
IF c_ca = "0" THEN update c_table SET column_b = "No" WHERE column_a = c_ca; END IF;
IF c_ca = "1" THEN update c_table SET column_b = "Yes" WHERE column_a = c_ca; END IF;
END LOOP;
CLOSE c_ab; END
工作并经过测试的代码[请参考一些游标教程以根据您的条件进行更新],并且您可以快速批量更新表格。
感谢 @Jim Macaulay。这样做就可以了。谢谢其他所有人的建议。
这样怎么样:
update table set
columnB = concat('unique ', columnA)
根据您的需要,您可能需要或不需要 where
子句。
如果你有数百个值,最好将{唯一值-更新值}映射定义在单独的表中,正如TT所要求的那样。但是,如果你愿意在UPDATE语句中硬编码这些映射:
UPDATE t
SET B = CASE A
WHEN 'unique value1' THEN 'value1'
WHEN 'unique value2' THEN 'value2'
WHEN 'unique value3' THEN 'value3'
ELSE 'Unknown'
END
FROM table t
顺便说一下,上面只是针对3种映射的。
UPDATE table
SET statictext = CASE
WHEN phonenumber = '1111111111' THEN '测试1'
WHEN phonenumber = '2222222222' THEN '测试2'
ELSE '错误'
END
FROM table;
- Chad