2010-03-31 27 views
0

例如我用下面的命令来查找记录选择,删除和从MySQL中使用单个查询

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

multible表更新,如果找到了一个匹配的话,我想删除此记录,并更新在同一个查询中另一个表。我可以用'连接'来解决这个问题吗?

回答

3

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

没有使用单个SQL查询,

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

+0

你知道你的用户名每次都会让我崩溃。但是当我在开车的时候,当我在田野里看到他们时,我仍然会去“horsie”。 – HLGEM 2010-03-31 21:01:42

+0

就在这一刻,我们都是这样或那样的所有人,因为我认为这是来自SO的愚人节笑话。 – Smandoli 2010-04-01 03:37:51

1

不,在一个查询中没有办法做三个单独的操作。

为什么你需要在一个吗?

+0

如果有办法,你不想使用它......我有和乍得一样的问题(“为什么?”)。 – Smandoli 2010-03-31 20:29:32

+0

我认为当我在一个查询中使用所有查询时,我会获得更好的性能 – mewis 2010-03-31 20:32:30

+0

@mewis:在同一个事务中,而不是查询,是适当的术语。 – 2010-03-31 20:43:20

0

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

DELETE FROM users.mail用户WHERE users.uid =%s的

将返回0,如果删除任何行或行数它删除。你可以检查回报,并根据它来决定要更新什么...

1

如果你的目标是提高性能,你可以使用一个单一的CALL调用数据库,使用一个存储过程2里面的不同查询。