如何在PostgreSQL中通过排序删除固定数量的行?
我试图把一些旧的MySQL查询到PostgreSQL,但我有麻烦这一个:
DELETE FROM logtable ORDER BY timestamp LIMIT 10; PostgreSQL不允许在其删除语法中的排序或限制,并且表没有主键,因此我不能使用子查询。此外,我想保留查询完全删除给定数字或记录的行为 – 例如,如果表包含30行,但它们都有相同的时间戳,我仍然要删除10,虽然它不重要其中10。 所以;如何在PostgreSQL中通过排序删除固定数量的行? 编辑:没有主键意味着没有log_id列或类似。啊,传统系统的快乐!
你可以尝试使用
ctid :
DELETE FROM logtable WHERE ctid IN ( SELECT ctid FROM logtable ORDER BY timestamp LIMIT 10 ) ctid是:
还有oid,但只有存在,如果你特别要求,当你创建表。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |