sql - 如何在单个 SQL 查询中更新具有两个不同 ID 和不同值的一列中的两列?
问题描述
我有一张桌子Item
:
id | price
---+--------
1 | 20000
2 | 30000
3 | 40000
4 | 43000
如何在单个 SQL 查询中更新价格列 id(1) = 1000, id(2) = 2000?
解决方案
使用case
:
update items
set price = (case when id = 1 then 1000 when id = 2 then 2000 else price end)
where id in (1, 2);
您也可以使用from
子句来编写:
update items
set price = v.price
from (values (1, 1000), (2, 2000)) v(id, price)
where v.id = items.id;
这也更安全一些,确保 id 确实匹配,不会意外更新额外的行。
推荐阅读
- vsto - Outlook:在多个选项卡中重用功能区组以在 Outlook 的多个位置显示自定义功能区(VSTO 插件、功能区设计器)
- r - 基于R中的两列排列数据框
- c# - 在保持内容比例的情况下调整窗口大小
- javascript - 如何在 TypeScript 中引用回调的返回值类型
- jquery - DJango Ajax - 点赞按钮仅在第一篇文章中单击时更改
- tensorflow - 执行时收到 tensorflow 错误(导入 tensorflow)
- typescript - 对于 Typescript 交集类型(类型 C = A & B),如何在 IDE 提示中查看生成的类型签名而不是组件?
- c# - ServiceStack.Redis:缺少 PopRight / PopLeft,取而代之的是奇怪的命名方法?
- java - 将包含下划线的字符串合并在一起
- git - Git 认为 @(Ctrl+Alt+2) 是 R