sql - 删除mysql中的最后n行

标签 sql database db2

我正在尝试删除给定表中的最后 N 行。我尝试运行以下脚本

DELETE FROM SCHEMA ORDER BY PID DESC LIMIT 26000;

但是我收到了这个错误

Message: [SQL0199] Keyword ORDER not expected. Valid tokens: USE SKIP WAIT WITH WHERE. Cause . . . . . : The keyword ORDER was not expected here.

我也试过运行这个脚本

DELETE FROM SCHEMA WHERE PID IN (SELECT PID FROM (SELECT  PID FROM SCHEMA ORDER BY PID DESC limit 26000) a );

但是,除了关键字不是“LIMIT”之外,我还是遇到了同样的错误。

我的语法有错误吗?对我如何做到这一点有什么建议吗?

最佳答案

您的错误是 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;

也许您使用的 DB2 版本不支持 DELETE 中的 ORDER BY

关于sql - 删除mysql中的最后n行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50270623/

相关文章:

java - 如何衡量Java中数据库的性能?

php - DB2 PHP 连接

sql - 在DB2中,Oracle的NULLS FIRST等效于什么?

php - 使用javascript处理php发送的JSON数据

php - 将与 WP po​​st-id 匹配的数据库表行显示到 html 表中

mysql - Magento:用于查找没有特定子类别的产品的 SQL 查询

php - 将 Eloquent 日期列(created_at、updated_at、deleted_at)移动到相关表

docker - 如何使用ASP.Net Core从Docker容器连接到DB2?

java - 如何在我的 DAO 类中的一个事务中执行少量查询?是否可以创建一个查询?

sql - 如何在 SQL 中有效地统计列值的出现次数?