以下两个查询实现了我对表格的处理:
Update person_role_memberships, events
set person_role_id = 2
where person_role_id = 32 and event_name = events.name and events.date_2 = curdate() - 1
;
-
update person_role_memberships set person_role_id = 2
where person_role_id = 32 and event_name in
(select name from events where date_2 = curdate() -1
);
我想知道在最优性,安全性(角落情况或副作用)或最佳做法方面哪种方式更好?
答案 0 :(得分:0)
第一个版本显然不是标准SQL,因为不允许SET
之前的多个表。
Update person_role_memberships, events SET
此外,“最佳性”取决于您打算使用的实际产品和版本。 但只要没有其他原因我就尽可能使用标准SQL。
作为一个改进的小想法(即你应该测试它)你可以用IN
替换EXISTS
部分
... and exists(select 1 from events where event_name = event.name and date_2 = curdate() -1)