选择,删除和;使用mysql中的单个查询从多个表更新

时间:2010-03-31 20:17:36

标签: sql mysql

例如我使用以下命令来查找记录

SELECT `users`.`mail` 
  FROM `users` 
 WHERE `users`.`uid` = %s

如果找到匹配,那么我想删除此记录,并在同一查询中更新另一个表。我可以用'加入'解决这个问题吗?

4 个答案:

答案 0 :(得分:3)

  

如果找到匹配,那么我想删除此记录,并在同一查询中更新另一个表。我可以用'加入'解决这个问题吗?

没有单个SQL查询,没有。

但您可以在单个stored procedure内使用单独的SQL查询执行这些操作。这比单独从您的应用程序提交三个查询要快,因为没有时间/性能丢失通过线路来回传输数据(往返于您的应用程序代码)。

答案 1 :(得分:1)

不,在一个查询中无法执行三个单独的操作。

为什么你需要一个人做?

答案 2 :(得分:1)

如果你的目标是提高性能,你可以使用一个存储过程在数据库中使用单个CALL执行它,该存储过程在内部执行两个不同的查询。

答案 3 :(得分:0)

我认为你想要选择然后删除的唯一原因是你是自己做的,并且想要确保你删除了正确的东西。像

这样的东西

DELETE users.mail FROM users WHERE users.uid =%s

如果删除没有行或删除了多行,

将返回0。您可以检查返回并根据更新内容做出决定......