sql - 更新数据库不影响不同的情况
问题描述
我有一个问题,我想为不同的情况创建一个条件,例如:
当(WeekDay == 2)字段 CanWork2 应该是 1 但这不会发生只是更改 1 字段“CanWork1”
UPDATE
Emps
SET
CanWork1 = CASE WHEN cd.WeekDay = 1 THEN 1 ELSE CanWork1 END,
CanWork2 = CASE WHEN cd.WeekDay = 2 THEN 1 ELSE CanWork2 END,
CanWork3 = CASE WHEN cd.WeekDay = 3 THEN 1 ELSE CanWork3 END,
CanWork4 = CASE WHEN cd.WeekDay = 4 THEN 1 ELSE CanWork4 END,
CanWork5 = CASE WHEN cd.WeekDay = 5 THEN 1 ELSE CanWork5 END,
CanWork6 = CASE WHEN cd.WeekDay = 6 THEN 1 ELSE CanWork6 END,
CanWork7 = CASE WHEN cd.WeekDay = 7 THEN 1 ELSE CanWork7 END
FROM
#PS_EMPLOYEES AS Emps
CROSS JOIN _PS_checkdays1 AS cd
解决方案
加入前聚合:
UPDATE Emps
SET CanWork1 = COALESCE(cd.CanWork1, Emps.CanWork1),
CanWork2 = COALESCE(cd.CanWork2, Emps.CanWork2),
. . .
FROM #PS_EMPLOYEES Emps CROSS JOIN
(SELECT MAX(CASE WHEN cd.WeekDay = 1 THEN 1 END) as CanWork1,
MAX(CASE WHEN cd.WeekDay = 2 THEN 1 END) as CanWork2,
. . .
FROM _PS_checkdays1 cd
) cd;
该UPDATE
语句只更新每个匹配的行一次。如果JOIN
生成多行,则选择任意行进行更新。
推荐阅读
- oracle - 如何将 CLOB 类型的参数传递给具有 100k+ 长度字符串的 Oracle 存储过程?
- python - 我们什么时候应该在我们的正则表达式中使用组?这里真正的优势是什么?
- winforms - C# Panel AutoScroll down using chromium
- swiftui - 如何获取在 TabView 中选择了哪个视图的值?
- sql - 使用 BigQuery 访问 Google Analytics 自定义维度
- excel - 连接特定列的字符串 (VBA)
- python - 无法在 Python 中的 Flask 网页上显示字典的值
- salesforce - 触发器以限制特定类型的重复记录
- php - 将自定义字段添加到“编辑供应商”页面 - Woocommerce 产品供应商
- javascript - 当我放大它时,我的 D3js 树形图不属于我的 div