Sql 为什么这个UPDATE语句要更新每个记录?
我有一个UPDATE语句,用于为有限数量的记录更新状态字段。声明如下:Sql 为什么这个UPDATE语句要更新每个记录?,sql,sql-update,Sql,Sql Update,我有一个UPDATE语句,用于为有限数量的记录更新状态字段。声明如下: UPDATE warehouse_box SET warehouse_box_status_id = wbsv.warehouse_box_status_id FROM warehouse_box_status_vw wbsv INNER JOIN pallet_warehouse_box pwb ON wbsv.warehouse_box_id = pwb.warehouse_box_id INNER JO
UPDATE warehouse_box
SET warehouse_box_status_id = wbsv.warehouse_box_status_id
FROM
warehouse_box_status_vw wbsv INNER JOIN
pallet_warehouse_box pwb ON wbsv.warehouse_box_id = pwb.warehouse_box_id INNER JOIN
routing_shipment_pallet rsp ON pwb.pallet_id = rsp.pallet_id
WHERE
rsp.date_removed IS NULL
AND pwb.date_unpalletized IS NULL
AND rsp.routing_shipment_id = 100002
预期结果是6条与WHERE子句匹配的记录更新其状态。但我看到的是所有200000多条记录都被更新了。似乎WHERE子句被完全忽略了
有人能帮我解释一下吗?您似乎没有在WHERE和Internal联接中选择on warehouse\u框-仅从其他表中选择…您似乎没有在WHERE和Internal联接中选择on warehouse\u框-仅从其他表中选择…您没有在from中包括table warehouse\u框条款如果您添加warehouse\u box并将其加入warehouse\u box\u状态,则应该可以解决您的问题。FROM子句中没有包含表warehouse\u box。如果您添加warehouse\u box并将其加入warehouse\u box\u状态,应该可以解决您的问题。使用相同的FROM和WHERE子句执行SELECT时会发生什么 如果你得到了所有的200000行,你可以做一些事情来追踪问题 如果您只得到了6条要更新的记录,那么就应该开始寻找可能正在更新整个表的触发器了
编辑:看起来更敏锐的眼睛已经发现了问题。使用相同的FROM和WHERE子句执行SELECT时会发生什么 如果你得到了所有的200000行,你可以做一些事情来追踪问题 如果您只得到了6条要更新的记录,那么就应该开始寻找可能正在更新整个表的触发器了
编辑:看起来敏锐的眼睛已经发现了问题。将更新..设置部分替换为选择*并告诉我们返回了多少记录。将更新..设置部分替换为选择*并告诉我们返回了多少记录。Meh。没错。这可能是一个太接近问题的案例研究。。。非常感谢=无聊的。没错。这可能是一个太接近问题的案例研究。。。非常感谢=这就是困扰我的地方——当我在SELECT中使用这些子句时,我只得到了预期的6行,我知道没有触发器正在运行。这就是困扰我的地方——当我在SELECT中使用这些子句时,我只得到了预期的6行,我知道没有触发器正在运行。