我在PostgreSQL 8.3.8数据库中有一个表,它没有键/约束,并且有多行具有完全相同的值.
我想删除所有重复项,每行只保留1份.
特别是有一列(称为"密钥")可用于识别重复(即每个不同的"密钥"应该只存在一个条目).
我怎样才能做到这一点?(理想情况下使用单个SQL命令)在这种情况下,速度不是问题(只有几行).
我需要从PG数据库中删除大约200万行.我有一个我需要删除的ID列表.但是,我尝试这样做的任何方式都需要几天时间.
我尝试将它们放在一个表中,并在100个批次中进行.4天后,这仍然在运行,只删除了297268行.(我必须从ID表中选择100个id,删除该列表中的IN,从ids表中删除我选择的100个).
我试过了:
DELETE FROM tbl WHERE id IN (select * from ids)
Run Code Online (Sandbox Code Playgroud)
那也是永远的.很难判断多久,因为我看不到它的进展直到完成,但查询仍然在2天后运行.
当我知道要删除的特定ID时,只需要寻找从表中删除的最有效方法,并且有数百万个ID.
我正在尝试创建一个临时表,只选择某个数据register_type.我写了这个查询,但它不起作用:
$ CREATE TABLE temp1
(Select
egauge.dataid,
egauge.register_type,
egauge.timestamp_localtime,
egauge.read_value_avg
from rawdata.egauge
where register_type like '%gen%'
order by dataid, timestamp_localtime ) $
Run Code Online (Sandbox Code Playgroud)
我正在使用PostgreSQL.
你能告诉我查询有什么问题吗?