在mysql中删除同一个表上有条件的行

时间:2014-07-02 05:07:36

标签: mysql sql

我必须从max(id)的表格中删除MySQL行。 我正在使用query ::

 DELETE 
 FROM master 
 WHERE id=(
 SELECT MAX(id) 
 FROM master)

但获得error No. 1093

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:6)

您无法在update子句中为FROM指定目标表。

您可以删除最后一行,如下所述。

 DELETE FROM master ORDER BY id DESC LIMIT 1

答案 1 :(得分:0)

您无法修改从子查询中选择数据的同一个表。

试试这个 -

DELETE m.*
FROM master m 
WHERE id IN (SELECT id_temp from(
SELECT MAX(id) as id_temp 
FROM master) x)

答案 2 :(得分:0)

  

您无法在Delete

中为FROM clause指定目标表

试试这个

DELETE FROM master 
WHERE id IN (SELECT A.MAXid FROM 
               (SELECT MAX(id) as MAXid FROM master) A
            ) 

答案 3 :(得分:0)

DELETE FROM Test WHERE id IN(SELECT MAX(id) FROM Test);

这似乎是跨SQL的供应商友好。 MySQL中的LIMIT选项在SQL SERVER中变成了这个。

 DELETE FROM Test WHERE id IN(SELECT TOP 1 id FROM Test ORDER BY id DESC );

请参阅here