Search Postgresql Archives

Re: delete query using CTE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thank you Michael & David for your extremely fast response.  With your help I was able to fix the query as follows:

DELETE FROM price_old
WHERE ctid IN
    (SELECT ctid
    FROM
        (SELECT ctid,
         ROW_NUMBER() OVER( PARTITION BY ticker, date
        ORDER BY ctid ) AS my_row_num
        FROM price_old ) t
        WHERE t.my_row_num > 1 );


On Sun, Mar 13, 2022 at 10:52 AM David G. Johnston <david.g.johnston@xxxxxxxxx> wrote:
On Sun, Mar 13, 2022 at 7:44 AM Roger Bos <roger.bos@xxxxxxxxx> wrote:
WITH cte AS
( SELECT *, ROW_NUMBER() OVER ( PARTITION BY ticker, date ORDER BY ticker, date) my_row_num FROM price_old)
DELETE FROM cte WHERE my_row_num > 1;

I get the following error:

ERROR: relation "cte" does not exist LINE 3: DELETE FROM cte WHERE my_row_num > 1;
 
Right...when all is said and done DELETE removes rows from permanent tables.  While "cte" does exist it is a virtual table and so doesn't qualify.  A permanent relation named cte does not exist from which permanent data can be deleted.

See the following for ways to deal with duplicate removal on incorrectly constrained tables.


David J.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux