我正在尝试将一些旧的MySQL查询移植到PostgreSQL,但我遇到了这个问题:
DELETE FROM logtable ORDER BY timestamp LIMIT 10;
Run Code Online (Sandbox Code Playgroud)
PostgreSQL不允许对其删除语法进行排序或限制,并且该表没有主键,因此我无法使用子查询.此外,我想保留在查询删除的行为究竟该规定数量的记录-例如,如果表中包含30行,但它们都具有相同的时间戳,我还是想删除10,虽然它并不重要哪10.
所以; 如何在PostgreSQL中通过排序删除固定数量的行?
编辑:没有主键意味着没有log_id列或类似.啊,遗留系统的乐趣!
我想从我的表中删除前500条记录,没有任何条件.
表定义如下:
CREATE TABLE txn_log
(
txn_log_timestamp timestamp without time zone NOT NULL,
txn_log_pgm_id character(6)
)
WITH (OIDS=FALSE);
Run Code Online (Sandbox Code Playgroud)
我这里没有任何主键.我试图删除使用
DELETE FROM txn_log LIMIT 500
Run Code Online (Sandbox Code Playgroud)
但它抛出错误:
错误:语法错误位于或接近"LIMIT"第1行:从TXN_LOG LIMIT删除5000 ^
**********错误**********
错误:"LIMIT"或附近的语法错误
有人可以建议我这样做吗?