我正在尝试删除给定表中的最后N个行。我尝试运行以下脚本
DELETE FROM SCHEMA ORDER BY PID DESC LIMIT 26000;
但我收到此错误
消息:[SQL0199]不期望关键字ORDER。有效代币:使用SKIP WAIT WITH WHERE。原因。 。 。 。 。 :这里不期望关键字ORDER。
我也试过运行这个脚本
DELETE FROM SCHEMA WHERE PID IN (SELECT PID FROM (SELECT PID FROM SCHEMA ORDER BY PID DESC limit 26000) a );
但是,我仍然得到相同的错误,但关键字不是预期的“LIMIT”。
我的语法有错误吗?关于我如何做到这一点的任何建议?
答案 0 :(得分:1)
您的错误是DB2错误,而不是MySQL错误。我建议:
DELETE FROM SCHEMA
WHERE PID IN (SELECT PID
FROM SCHEMA
ORDER BY PID DESC
FETCH FIRST 26000 ROWS ONLY
) ;
我认为这也有用:
DELETE FROM SCHEMA
ORDER BY PID
FETCH FIRST 26000 ROWS ONLY;
也许您正在使用ORDER BY
中不支持DELETE
的DB2版本。
答案 1 :(得分:0)
如何删除MySQL中的最后n行:
START TRANSACTION
SELECT
@pid = MIN(pid)
FROM
(
SELECT PID FROM schema ORDER BY PID DESC LIMIT 26000
)
last26000
DELETE FROM schema WHERE pid >= @pid
COMMIT