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

时间:2012-04-06 11:39:59

标签: 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
 ;

-

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

我想知道在最优性,安全性(角落情况或副作用)或最佳做法方面哪种方式更好?

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)