我有一个表 A,其结构如下:
ID Name City zip
1 xxx wer 134
2 yyy qwe 234
3 zzz ert 256
4 www qwe 567
现在我想用一个 SQL 查询更新多行。例如查询:
UPDATE A
SET zip= '355'
WHERE id= '2';
将更新一行,如果我还想仅通过一个查询更新 ID 为 1 和 4 的行,ZIP 不同怎么办?
最佳答案
如果您的意思是要通过一个查询将多行更新为同一个 zip,您可以使用以下命令:
UPDATE A
SET zip= '355'
WHERE id in ('1','4');
但是,如果您的意思是要将多行更新为 zip 值,那么如果没有一些逻辑背后的 id 应该获取哪个 zip,则无法完成。例如,如果你只想做一些不同的值,你可以使用类似的东西:
UPDATE A
SET zip= decode(id,'1','100','4','400')
WHERE id in ('1','4');
这会将 id 为“1”的任何行的 zip 设置为“100”,将 id 为“4”的任何行设置为“400”,依此类推。您可以根据需要添加任意数量的参数。如果您想要任何未列出的默认值,只需将其添加到末尾,例如decode(id,'1','100','4','400','999')
将设置任何不是 id '1' 或 '4' 的(但不排除)在 where 语句中为 '999')。
如果您有很多不同的值,那么我建议创建一个引用数据表并从该表中进行选择作为您更新语句中的子查询。
关于sql - 在 Oracle DBMS 中使用单个 SQL 查询更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19565525/