sql - 如何通过检查同一表中另一条记录中的值来更新记录
问题描述
我有一张桌子:
ID DATE RANGE STATUS
--------------------------------------------
123 30-SEP-2019 000 C
123 30-SEP-2019 001 NULL
345 25-SEP-2019 000 C
345 30-SEP-2019 001 NULL
567 30-SEP-2019 000 C
567 30-SEP-2019 001 NULL
789 27-SEP-2019 000 C
789 30-SEP-2019 001 NULL
具有相同 ID(例如 123)的记录被视为具有不同 RANGE 的相同记录。我需要将 001 RANGE 记录的状态更新为 Y,其中 000 RANGE 记录的日期应为 2019 年 9 月 30 日。
前任。更新查询应该将 ID - '123' 和 RANGE - '001' 的记录的状态更新为'Y',因为对于 ID - '123' 和 RANGE - '000' 记录的 DATE 是'30-SEP- 2019 年'。它还应该使用 ID - 567 更新 001 RANGE 记录的状态。
它不应更新 ID 789 和 345 的 001 RANGE 状态,因为那些 000 RANGE 记录的 DATE 不等于 30-SEP-2019。
我怎样才能做到这一点?
解决方案
想到一个带有过滤的相关子查询:
update t
set status = (select t2.status
from t t2
where t2.id = t.id and t2.range = '000'
)
where date = '2019-09-30' and range = '001';
推荐阅读
- c++ - 我可以使用 cmake/make 编译所有且仅编译我使用的 cpp/hpp 文件吗?
- r - 如何解决这个与原子向量有关的 R 错误消息?
- javascript - 无法在 Angular 7 中使用 D3 条形图读取未定义的属性“地图”
- google-app-maker - 如何通过代码样式化不同类型输入控件的值?
- deep-learning - 在 OpenNMT-py 中的翻译过程中获得对齐/注意
- moodle - 如何将scorm播放器与Moodle数据库集成
- javascript - force:recordData 在快速操作上不起作用
- java - 在spring MVC中验证实体类是否包含子类
- php - 如何使用正则表达式获取包含所有图像数字和图像字母的数组?
- reactjs - 如何使用离线功能实现 redux thunk 操作?