我有一个表,其中所有行均已按必要的顺序排列。我需要删除该表的最后一行。怎么样?
例如,我不能使用
order by
因为行已经按正确的顺序。
我需要
delete bottom(1) from mytable
答案 0 :(得分:2)
这个评论太长了。
表代表无序集。该表没有排序,因此没有“第一”行,也没有“最后”行。没有“正确的顺序”。这就是SQL的工作原理。
为了定义“最后”行,您需要一列来指定顺序。通常,这是一个自动递增的ID,因此最后一行具有最大的ID。
如果您有这样的专栏并使用MySQL,则可以将limit
和order by
与delete
一起使用:
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)
您必须要求WHERE
或ORDER
子句才能删除最后一条记录。