我有一个表,我只按ID顺序显示最新的30行.
我正在尝试使用下面的查询删除30个最新行之后的任何行.
DELETE FROM table WHERE type = 'test' ORDER BY id DESC LIMIT 30, 60
Run Code Online (Sandbox Code Playgroud)
我一直在下面得到这个错误
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 60' at line 1
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
Joh*_*Woo 18
试试这个,
DELETE FROM table
WHERE ID IN
(
SELECT ID
FROM
(
SELECT ID
FROM table
WHERE Type = 'TEST'
ORDER BY ID
LIMIT 30,60
) a
)
Run Code Online (Sandbox Code Playgroud)
第二次编辑:虽然MySQL在delete语句中支持LIMIT,但它不允许使用OFFSET.这意味着您不能跳过前30行.
在id(或任何其他主键)上进行子选择:
DELETE FROM table WHERE id IN (SELECT id FROM table WHERE type = 'test' ORDER BY id DESC LIMIT 30, 60)
Run Code Online (Sandbox Code Playgroud)