2010-03-31 28 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裏面的不同查詢。