我正在运行SQL Server,需要更新数百个条目。列A具有唯一的值,基于此,我需要更新同一表的列B,所有值均不同。本质上,我正在寻找一种执行以下操作的方法,但要以大量方式进行:
UPDATE table
set column B = 'value'
where column A = 'unique value'
答案 0 :(得分:2)
这是您所期望的吗
UPDATE table
set column B = case when column A = 5 then 'unique string' end;
答案 1 :(得分:0)
怎么样:
update table set
columnB = concat('unique ', columnA)
根据您的需要,您可能需要也可能不需要where
子句。
答案 2 :(得分:0)
有了数百个值,您最好在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个映射
答案 3 :(得分:0)
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
正在工作并经过测试的代码[请参考一些游标教程以根据您的条件进行更新],并可以以此方式批量,快速地更新表
答案 4 :(得分:0)
感谢@Jim Macaulay。做到了。谢谢大家的投入。