删除mysql中的最后n行

时间:2018-05-10 10:19:20

标签: sql database db2

我正在尝试删除给定表中的最后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”。

我的语法有错误吗?关于我如何做到这一点的任何建议?

2 个答案:

答案 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