【发布时间】:2021-02-09 21:52:00
【问题描述】:
我正在尝试将VEHICLES_FW 表中所有记录的LAST_INSPECTION_FW 字段更新为最后一个JOB_DATE_FW 以用于REASON_CODE_FW = 35 的记录。但是,发生的情况是,一旦执行了以下代码,它就没有考虑到 WHERE 子句。这会导致所有记录都更新,而它应该只更新带有REASON_CODE_FW = 35 的记录。
有没有办法重组此代码以使其正常工作?请帮忙,谢谢!
UPDATE VEHICLES_FW
SET VEHICLES_FW.LAST_INSPECTION_FW = JOB_HEADERS_FW.FIELD2MAX
FROM VEHICLES_FW
INNER JOIN (SELECT VEHICLE_ID_FW, MAX(JOB_DATE_FW) AS FIELD2MAX
FROM JOB_HEADERS_FW
GROUP BY VEHICLE_ID_FW) AS JOB_HEADERS_FW
ON VEHICLES_FW.VEHICLE_ID_FW = JOB_HEADERS_FW.VEHICLE_ID_FW
INNER JOIN JOB_DETAILS_FW
ON JOB_NUMBER_FW = JOB_NUMBER_FW
WHERE REASON_CODE_FW = '35'
【问题讨论】:
-
您好 Wayne,我建议您在查询中开始使用表别名,以便在引用列时清楚该列来自哪个表。另外,
INNER JOIN JOB_DETAILS_FW ON JOB_NUMBER_FW = JOB_NUMBER_FW可能不是您想要的?
标签: sql sql-server tsql join sql-update