如何删除mysql中的表中的记录但保留前x个记录

时间:2015-07-29 18:18:08

标签: php mysql

我想在mysql中编写一个查询来执行删除操作。我想保留第一个X记录,例如只删除第40行之后的记录。我的意思是我要保留前x行并删除之后的所有行。 我该怎么写这个查询?

我可以删除第一行,但我不知道如何删除第X行后的行

我尝试了这段代码,但这不正确且无效。

DELETE FROM `myTable` WHERE `username` = 'name' ORDER BY `DD` DESC LIMIT 40 OFFSET 3 

3 个答案:

答案 0 :(得分:1)

修改

DELETE FROM `myTable` WHERE `id` in ( select `id` from `myTable` where `username` = 'name' ORDER BY `DD` DESC Limit 40, 18446744073709551615)

答案 1 :(得分:1)

LIMIT 40 OFFSET 3适用于PostgreSQL。

对于MySql,您可以尝试LIMIT 40,X

40 =从第40行开始 X =之后要删除的行数

答案 2 :(得分:1)

强制性免责声明:没有"第一行"关系数据库表的内在特性。

但是,既然你提供了ORDER BY,那么这样的事情应该有用(或许):

SELECT `DD` INTO @dd40
FROM `myTable` 
WHERE `username` = 'name'
ORDER BY `DD` ASC
LIMIT 39, 1
;
DELETE FROM `myTable` 
WHERE `username` = 'name' 
AND `DD` > @dd40
;