如何从表中删除无条件的最后一行?

时间:2019-04-15 11:16:44

标签: sql

我有一个表,其中所有行均已按必要的顺序排列。我需要删除该表的最后一行。怎么样?

例如,我不能使用

order by

因为行已经按正确的顺序。

我需要

delete bottom(1) from mytable

3 个答案:

答案 0 :(得分:2)

这个评论太长了。

表代表无序集。该表没有排序,因此没有“第一”行,也没有“最后”行。没有“正确的顺序”。这就是SQL的工作原理。

为了定义“最后”行,您需要一列来指定顺序。通常,这是一个自动递增的ID,因此最后一行具有最大的ID。

如果您有这样的专栏并使用MySQL,则可以将limitorder bydelete一起使用:

delete t from <table> t
    order by t.id desc
    limit 1;

如果没有这样的列,则需要通过其他方式标识要删除的行:

delete t from <table> t
    where col1 = ? and col2 = ? and . . .;

答案 1 :(得分:0)

如果您具有id列并将其设置为自动递增,则可以使用以下方法:

DELETE FROM TABLE_NAME
ORDER BY id DESC LIMIT 1

答案 2 :(得分:0)

您可以使用下面的SQL查询删除最后一条记录,

DELETE FROM MyTable WHERE ID in(SELECT MAX(ID) FROM MyTable) 

您必须要求WHEREORDER子句才能删除最后一条记录。