《MYSQL教程mysql select語句同時UPDATE同一張表的方法舉例》要點:
本文介紹了MYSQL教程mysql select語句同時UPDATE同一張表的方法舉例,希望對您有用。如果有疑問,可以聯系我們。
MYSQL教程本節內容:
mysql數據庫中select語句同時UPDATE同一張表.
MYSQL教程MySQL不允許SELECT FROM后面指向用作UPDATE的表.
當然,有比創建無休止的臨時表更好的方法.
MYSQL教程本文介紹下如何UPDATE一張表,同時在查詢子句中使用SELECT的辦法.
MYSQL教程一,問題描述
假設,要UPDATE的表跟查詢子句是同一張表,例如用統計數據更新表的字段(此時必要用group子句返回統計值),從某一條記錄的字段update另一條記錄,而不必使用非標準的語句等.
MYSQL教程例子:
?
MYSQL教程差錯提示:ERROR 1093 (HY000): You can't specify target table 'apples' for update in FROM clause.
MYSQL教程mysql手冊UPDATE documentation中的說明:
“Currently, you cannot update a table and select from the same table in a subquery.”
解決此問題的簡單方法:通過查詢子句來update目標.
MYSQL教程當然還有更好的方法,且看下面的介紹.
MYSQL教程解決方法:
既然MySQL是通過臨時表來實現FROM子句里面的嵌套查詢,那么把嵌套查詢裝進另外一個嵌套查詢里,可使FROM子句查詢和保存都是在臨時表里進行,然后間接地在外圍查詢被引用.
MYSQL教程例句:
?
MYSQL教程如果想了解更多此中的機制,請閱讀MySQL Internals Manual相關章節.
MYSQL教程未辦理的問題:
一個常見的問題是,IN()子句優化廢品,被重寫成相關的嵌套查詢,有時(往往?)造成性能低下.
把嵌套查詢裝進另外一個嵌套查詢里并不能阻止它重寫成相關嵌套,除非下狠招.
MYSQL教程這種情況下,最好用JOIN重構查詢(rewrite such a query as a join).
MYSQL教程另外一個問題:
臨時表被引用多次.“裝進嵌套查詢”的技巧無法辦理這些問題,因為它們在編譯時被創建,而上面討論的update問題是在運行時.
MYSQL教程就介紹這些了,mysql select語句同時UPDATE同一張表,有時會用得上,建議年夜家細細體會以上的示例.
《MYSQL教程mysql select語句同時UPDATE同一張表的方法舉例》是否對您有啟發,歡迎查看更多與《MYSQL教程mysql select語句同時UPDATE同一張表的方法舉例》相關教程,學精學透。維易PHP學院為您提供精彩教程。