Sql 编写更新查询的更好方法是什么?

Sql 编写更新查询的更好方法是什么?,sql,database,Sql,Database,以下两个查询实现了我希望对表执行的操作: 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 ; - 我想知道在优化、安全角落案例、副作用或最佳实践方面,哪种方法更好?第一个版本显然不是标准SQL,因为集合之前不允许有多个表 Update per

以下两个查询实现了我希望对表执行的操作:

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
 ;
-


我想知道在优化、安全角落案例、副作用或最佳实践方面,哪种方法更好?

第一个版本显然不是标准SQL,因为集合之前不允许有多个表

Update person_role_memberships, events SET
此外,最佳性取决于您打算使用的实际产品和版本。 但只要没有其他原因,我就会尽可能使用标准SQL

作为改进的一个小想法,即你应该测试它,你可以用EXISTS替换部分


我想对从date_2=curdate-1-存在的事件中选择name返回的每个记录运行更新查询,这样做吗?我认为存在只是为了测试是否返回了任何东西。你认为是对的,但存在的测试包括person\u role\u memberships.event\u name=event.name。它与所选内容相同。如果右侧返回一行,则EXISTS将返回true。行的内容并不重要。因此,我将只做这项工作。
Update person_role_memberships, events SET
... and exists(select 1 from events where event_name = event.name and date_2 = curdate() -1)