删除ID最低的记录

时间:2012-03-22 09:09:27

标签: mysql

当我在MySQL中输入此查询时:

DELETE FROM myTable WHERE ID = ( SELECT Min( ID ) FROM myTable )

我收到以下错误消息:

#1093 - You can't specify target table 'myTable' for update in FROM clause

有什么问题?

什么是正确的等价物?

7 个答案:

答案 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部分​​中使用的同一个表。

阅读:http://dev.mysql.com/doc/refman/5.6/en/update.html

答案 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;