我想从我的表中删除前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"或附近的语法错误
有人可以建议我这样做吗?
Rob*_*ert 11
尝试使用LIMIT
如下准备子查询
DELETE FROM txn_log
WHERE txn_log_pgm_id IN (SELECT txn_log_pgm_id
FROM txn_log
ORDER BY txn_log_timestamp asc
LIMIT 500)
Run Code Online (Sandbox Code Playgroud)
DELETE
FROM txn_log
WHERE ctid IN (
SELECT ctid
FROM txn_log
ORDER BY txn_log_timestamp limit 500
)
Run Code Online (Sandbox Code Playgroud)
根据文档
ctid
表格中行版本的物理位置.请注意,尽管可以使用ctid非常快速地定位行版本,但每次更新或移动VACUUM FULL时,行的ctid都会更改.因此,ctid作为长期行标识符是无用的.应该使用OID,甚至更好的用户定义的序列号来标识逻辑行.
归档时间: |
|
查看次数: |
7254 次 |
最近记录: |