Re: v9.1.3 WITH with_query UPDATE

Поиск
Список
Период
Сортировка
От Bill House
Тема Re: v9.1.3 WITH with_query UPDATE
Дата
Msg-id 4FDCE957.5090707@house-grp.net
обсуждение исходный текст
Ответ на Re: v9.1.3 WITH with_query UPDATE  (Vibhor Kumar <vibhor.kumar@enterprisedb.com>)
Список pgsql-general
On 06/16/2012 01:27 PM, Vibhor Kumar wrote:
> On Jun 16, 2012, at 1:11 PM, Bill House wrote:
>
>> md5sum may be duplicated and I am trying to mark the column "del" of the
>> redundant records leaving one unmarked.
>>
>> Here is one variation of the syntax I have tried on one group:
>>
>>      WITH batch AS (select * from files_test where
>>              md5sum =  '0010a3e4cc6cb8623c014f5bb95b5be1'
>>             ORDER BY path DESC OFFSET 1)
>>      UPDATE batch SET del = False;
> In Update clause you have to use tablename.
> Syntax would be something like given below:
> WITH batch as (SELECT columname,columname FROM tablename) UPDATE file_test set del=false FROM batch where
file_test.columname=batch.columnname... 
>
> Also AFAIU, you want to set del flag to false for duplicate md5 then you can achieve this with Normal UPDATE.
>
> Something like given below:
> UPDATE file_test set del=false WHERE CTID not in (SELECT MIN(ctid) FROM file_test WHERE
md5sum='0010a3e4cc6cb8623c014f5bb95b5be1';
>
>
> Thanks & Regards,
> Vibhor Kumar
> EnterpriseDB Corporation
> The Enterprise PostgreSQL Company
> Blog: http://vibhork.blogspot.com
>
>
>
Thanks for the help.

Based on your pointers and some careful re-reading of the manuals, I
composed a command that does what I want it to do (at least in my
preliminary test), mark all but one record to delete.

Here it is for the record:

    wch=# WITH batch AS (SELECT * FROM files_test
                      WHERE md5sum ='0010a3e4cc6cb8623c014f5bb95b5be1'
                      ORDER BY path DESC
                      OFFSET 1)
                  UPDATE files_test
                      SET del = True
                      FROM batch
                      WHERE batch.md5sum || batch.path =
files_test.md5sum || files_test.path;

                   UPDATE 2
      wch=#

If anyone can suggest a more efficient composition, I would be glad to
see it.  I am very new to this.

Thanks again,

Bill



В списке pgsql-general по дате отправления:

Предыдущее
От: Vibhor Kumar
Дата:
Сообщение: Re: v9.1.3 WITH with_query UPDATE
Следующее
От: Raghavendra
Дата:
Сообщение: Dtrace for tracing PostgreSQL link not working