当我在MySQL中输入此查询时:
DELETE FROM myTable WHERE ID = ( SELECT Min( ID ) FROM myTable )
我收到以下错误消息:
#1093 - You can't specify target table 'myTable' for update in FROM clause
有什么问题?
什么是正确的等价物?
答案 0 :(得分:8)
基本上在MySQL中,您无法对SELECT
部分中使用的表进行更新。有关详细信息,您可以检查以下行为:http://dev.mysql.com/doc/refman/5.6/en/update.html
理论上每个DELETE
都是UPDATE
,这就是您收到此错误的原因。
您可以简单地执行以下操作:
DELETE FROM myTable
ORDER BY my_id
LIMIT 1;
答案 1 :(得分:5)
尝试
DELETE FROM myTable ORDER BY ID LIMIT 1;
答案 2 :(得分:4)
那是因为在MySQL中,你不能修改你在SELECT部分中使用的同一个表。
答案 3 :(得分:2)
在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
现在你不会有任何错误。
干杯..!
答案 4 :(得分:0)
DELETE FROM myTable WHERE ID = (SELECT ID FROM myTable ORDER BY ID LIMIT 1)
答案 5 :(得分:0)
DELETE FROM myTable ORDER BY ID ASC LIMIT 1
答案 6 :(得分:0)
试试这个
DELETE FROM `table_name` ORDER BY id LIMIT 1;