sql - 使用案例结果的 SQL 更新
问题描述
我需要使用匹配键的另一个 file2 中的字段内容更新 file1 中的值,但前提是在 file2 中找到匹配的行。否则,使用 'Q' 文字更新 file1 字段。这可行,但似乎是多余的,并且需要太长时间?建议?
update ZXU
set XUATTN = case when (select count(*) from ZXK
where XKUSER = 'TOMTEST') > 0
then (select XKAUTH from ZXK
where XKUSER = 'TOMTEST')
else 'Q'
end
where XUUSER='TOMTEST'
解决方案
您可以使用COALESCE()
:
update ZXU
set XUATTN = COALESCE( (select k.XKAUTH from ZXK k where k.XKUSER = ZHU.XUUSER), 'Q')
where XUUSER = 'TOMTEST';
我会注意到,如果子查询返回多行,这(和您的代码)将生成错误。
推荐阅读
- sqlalchemy - 如何在 pytest 中忽略 SAWarning
- javascript - 如何为画布元素设置背景颜色?
- c# - 如何将字符串数组插入mysql json列
- c# - 创建 Postman JSON 集合文件
- javascript - 为什么 Electron React 传递 Prop 使用旧状态?
- python - Fastapi 自定义响应模型
- python - 如何将平均分组映射到输入数据框
- javascript - 防止 Apollo Server 错误表单崩溃浏览器
- python - python FPDF如何加粗内联文本
- postgresql - 如何获得包括模型 Sequelize 的总数?