1

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

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

我想知道在最优性、安全性(极端情况或副作用)或最佳实践方面哪种方法更好?

4

1 回答 1

0

第一个版本显然不是标准 SQL,因为之前的多个表SET是不允许的。

Update person_role_memberships, events SET

“优化”也取决于您打算使用的实际产品和版本。但只要没有其他原因,我会尽可能使用标准 SQL。

作为改进的一个小想法(即你应该测试它)你可以INEXISTS

... and exists(select 1 from events where event_name = event.name and date_2 = curdate() -1)
于 2012-04-06T11:51:49.710 回答