當我鍵入此查詢在MySQL:與最低的ID刪除記錄
DELETE FROM myTable WHERE ID = (SELECT Min(ID) FROM myTable)
我收到以下錯誤信息:
#1093 - You can't specify target table 'myTable' for update in FROM clause
問題是什麼?
什麼是等同的權利?
當我鍵入此查詢在MySQL:與最低的ID刪除記錄
DELETE FROM myTable WHERE ID = (SELECT Min(ID) FROM myTable)
我收到以下錯誤信息:
#1093 - You can't specify target table 'myTable' for update in FROM clause
問題是什麼?
什麼是等同的權利?
基本上在MySQL中,你不能在你的SELECT
部分使用表做一個更新。有關詳細信息,您可以檢查以下行爲:http://dev.mysql.com/doc/refman/5.6/en/update.html
理論上,每個DELETE
都是UPDATE
,因此這就是爲什麼會出現此錯誤的原因。
你可以簡單地做以下:
DELETE FROM myTable
ORDER BY my_id
LIMIT 1;
這是因爲在MySQL中,您不能修改您在SELECT部分中使用的同一個表。
嘗試
DELETE FROM myTable ORDER BY ID LIMIT 1;
@amit LIMIT 1並不意味着我們正在尋找的值爲1。這意味着限制結果集一行的ID。 – summerbulb 2012-03-22 09:40:03
DELETE FROM myTable WHERE ID = (SELECT ID FROM myTable ORDER BY ID LIMIT 1)
在mySql中,您不能在子查詢中引用myTable,這是整個問題.... – aProgrammer 2012-03-22 11:04:33
DELETE FROM myTable ORDER BY ID ASC LIMIT 1
在MySQL中,你不能修改您在SELECT部分使用相同的表。 此行爲記錄在:http://dev.mysql.com/doc/refman/5.6/en/update.html
而不是嵌套的子查詢,執行操作分兩部分,或者使用簡單的where子句。
嘗試:
$min_id = SELECT Min(ID) FROM myTable
DELETE FROM myTable WHERE ID = $min_id
現在你不應得到任何錯誤。
乾杯..!
試試這個
DELETE FROM `table_name` ORDER BY id LIMIT 1;
最小ID可能不是1.在那種情況下是什麼? – aProgrammer 2012-03-22 09:34:09
1表示要刪除的記錄數。它與ID無關。 – huzeyfe 2012-03-22 10:04:45
+1一個很酷的回答.... – aProgrammer 2012-03-22 11:03:27