我想在mysql中编写一个查询来执行删除操作。我想保留第一个X记录,例如只删除第40行之后的记录。我的意思是我要保留前x行并删除之后的所有行。 我该怎么写这个查询?
我可以删除第一行,但我不知道如何删除第X行后的行
我尝试了这段代码,但这不正确且无效。
DELETE FROM `myTable` WHERE `username` = 'name' ORDER BY `DD` DESC LIMIT 40 OFFSET 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
;