如何在PostgreSQL中删除具有排序的固定行数?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

我正在尝试将一些旧的MySQL查询移植到PostgreSQL,但我遇到了问题:

DELETE FROM logtable ORDER BY timestamp LIMIT 10;

PostgreSQL不允许对其删除语法进行排序或限制,而且该表没有主键,因此我不能使用子查询。此外,我希望保留查询删除的行为。

提问于
用户回答回答于

您可以尝试使用ctid:

DELETE FROM logtable
WHERE ctid IN (
    SELECT ctid
    FROM logtable
    ORDER BY timestamp
    LIMIT 10
)

用户回答回答于

DELETE FROM logtable 
WHERE id = any (array(SELECT id FROM logtable ORDER BY timestamp LIMIT 10));

扫码关注云+社区