如何解决如何用不同的值更新许多行?
对@Tim Biegeleisen进行thak,但不需要在行尾使用,
。在此代码中,第一部分(电子邮件)可以正常工作,但是第二部分(mobileno)无法正常工作。结束后,我在,
和,
都没有尝试过。
UPDATE table_name
SET
email = CASE id WHEN 1 THEN email1
WHEN 2 THEN email2
...
WHEN 22 THEN email22 END
mobileno = CASE id WHEN 1 THEN 00000
WHEN 2 THEN 11111
...
WHEN 22 THEN 2222222222 END
WHERE
id BETWEEN 1 AND 22;
解决方法
我将使用VALUES
子句(类似于INSERT语句):
UPDATE table_name t
SET email = v.email,mobileno = v.mobileno
from (
values
(1,'email1','00001'),(2,'email2','00002'),(3,'email3','00003'),....
(22,'email22','00022')
) as v(id,email,mobileno)
where t.id = v.id;
,
最好的选择可能是基于某些ID创建一个单独的表,其中包含所需的电子邮件和移动值。缺少这个,我们可以在这里使用大的CASE
表达式:
UPDATE table_name
SET
email = CASE id WHEN 1 THEN email1,WHEN 2 THEN email2,...
WHEN 22 THEN email22 END,mobileno = CASE id WHEN 1 THEN 00000,WHEN 2 THEN 11111,...
WHEN 22 THEN 2222222222 END
WHERE
id BETWEEN 1 AND 22;
假设您确实有一个包含id
值和电子邮件/手机号码的表格,则可以在此处进行更新联接:
UPDATE table_name AS t1
SET email = t2.email,mobileno = t2.mobileno
FROM temp_table_name t2
WHERE t1.id = t2.id;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。