You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中DELETE语句含ORDER BY报错:syntax error at or near 'order'

解决PostgreSQL删除最后N行数据的语法错误

你执行的DELETE from Employee order by EmployeeID desc limit 3;会触发语法错误,因为PostgreSQL的DELETE语句不支持直接在主语句后追加ORDER BY和LIMIT子句。

要实现删除最后3行数据的需求,可以通过先筛选出目标行的主键,再执行删除的方式来完成,以下是两种可行写法:

方法一:子查询筛选目标ID

DELETE FROM Employee
WHERE EmployeeID IN (
    SELECT EmployeeID
    FROM Employee
    ORDER BY EmployeeID DESC
    LIMIT 3
);

方法二:使用CTE(公共表表达式)

WITH rows_to_delete AS (
    SELECT EmployeeID
    FROM Employee
    ORDER BY EmployeeID DESC
    LIMIT 3
)
DELETE FROM Employee
WHERE EmployeeID IN (SELECT EmployeeID FROM rows_to_delete);

这两种写法的核心逻辑一致:先通过查询获取最后3行的EmployeeID,再根据这些ID精准删除对应行,完全符合PostgreSQL的语法要求。

内容的提问来源于stack exchange,提问作者Nemiziz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 01:33:31