我正在尝试将一些旧的MySQL查询移植到PostgreSQL,但我遇到了这个问题:
DELETE FROM logtable ORDER BY timestamp LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
PostgreSQL不允许对其删除语法进行排序或限制,并且该表没有主键,因此我无法使用子查询.此外,我想保留在查询删除的行为究竟该规定数量的记录-例如,如果表中包含30行,但它们都具有相同的时间戳,我还是想删除10,虽然它并不重要哪10.
所以; 如何在PostgreSQL中通过排序删除固定数量的行?
编辑:没有主键意味着没有log_id列或类似.啊,遗留系统的乐趣!
带有安全限制的简单 DELETE 会引发语法错误:
DELETE FROM system."products" LIMIT 1
Run Code Online (Sandbox Code Playgroud)
错误:“LIMIT”处的语法错误
SQL 状态:42601
如何限制要删除的行数?
(PostgresSQL 9.6 版)