当我键入此查询在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