2012-07-17 74 views
0

在MySQL中,這不運行:MySQL的選擇重構

delete from robottinosino where date = (select max(date) from robottinosino); 

錯誤消息:

ERROR 1093(HY000):您不能指定目標表 'robottinosino' 在 更新FROM子句

問:

  • 爲什麼? (強調「爲什麼」,所以Q沒有不準確地標記爲「重複」)
  • 如何解決?
+2

http://stackoverflow.com/questions/4562787/how-to-delete-from-select-in-mysql – ethrbunny 2012-07-17 14:48:34

+0

http://stackoverflow.com/questions/45494/mysql-error-1093 -cant-specified-target-table-for-update-in-from-clause,http://stackoverflow.com/questions/44712​​77/mysql-delete-from-with-subquery-as -條件 – 2012-07-17 14:50:04

回答

5

MySQL不允許你從表中刪除你也選擇。在很多情況下,這是一種競爭條件 - 在查詢的選定部分有機會檢索它們之前,您可能會從表中刪除記錄。

在你的情況下,應該允許查詢,因爲這場比賽沒有任何危險,但是MySQL不夠聰明。

還有的是一個解決辦法在這裏:MySQL Error 1093 - Can't specify target table for update in FROM clause