在Postgresql中删除连续的重复行

时间:2018-03-02 21:02:26

标签: sql postgresql

我有一个包含3列(id,amount,time)的表。该表基于id按升序排列。我想删除除第一个之外的amount列中具有相同值的所有连续行。

例如:

id: 12,15,16,17,19,22
amount: 555,546,546,53,53,500
time:

答案:

id:12,15,17,22    amount: 555,546,53,500    time:

只要连续行在amount列中具有相同的值,连续行的时间列就相同。 我在SO上搜索但找不到类似的问题

2 个答案:

答案 0 :(得分:1)

您可以使用lag()

select t.*
from (select t.*, lag(amount) over (order by id) as prev_amount
      from t
     ) t
where prev_amount is distinct from amount;

答案 1 :(得分:0)

这可能不是一种有效的方法,但如果你有大表(> 200万行)它会更快。

  1. String cmd[] = {"sh", "-c", "jar -cvf /Abhishek/logs.jar my_directory/logs/*.logs*"}; 表格为csv格式,金额列为Copy

    DISTINCT

  2. \COPY (SELECT DISTINCT ON (amount) * FROM Tablename) to '/home/user/table.csv' with csv delimiter ',';上一张表:

    Truncate

  3. 复制转储表:

    TRUNCATE TABLE Tablename;

  4. 我已尝试删除重复项,但查询完成需要一天的时间。这种方法很适合我。