从Postgresql表中删除一定数量的行

时间:2016-06-09 10:16:48

标签: postgresql

我是postgresql的新手,我在我的表中插入了5000行,但我只想从5000行中删除1500行。在这里,我没有任何约束来删除这些行。我必须从表中删除顶部或底部的1500行。

我已经google了很多但我没有任何线索删除没有任何约束的行。

任何建议都会很棒。

1 个答案:

答案 0 :(得分:2)

DELETE FROM YourTable
WHERE ctid IN (
SELECT ctid
FROM YourTable
ORDER BY timestamp
LIMIT 1500
)

ctid是: 行版本在其表中的物理位置。请注意,尽管可以使用ctid非常快速地定位行版本,但如果行的ctid被VACUUM FULL更新或移动,则行的ctid将会改变。因此,ctid作为长期行标识符是无用的。应该使用OID,甚至更好的用户定义的序列号来识别逻辑行。