Re: Please advice on a query - Mailing list pgsql-novice

From David G. Johnston
Subject Re: Please advice on a query
Date
Msg-id CAKFQuwb=1r9DCzr-sPxG=JBtXRUnEFz-TLvK41KEej_9RK576g@mail.gmail.com
Whole thread Raw
In response to Please advice on a query  (JORGE MALDONADO <jorgemal1960@gmail.com>)
List pgsql-novice
On Wed, Jul 11, 2018 at 9:05 AM, JORGE MALDONADO <jorgemal1960@gmail.com> wrote:
I have a table more or less like this:

-----------------------------------------------------
crs_id                some data                req
-----------------------------------------------------
25                       aaaaaaaa                 21
25                       aaaaaaaa                 19
17                       ccccccccc                 null
8                         dddddddd                 null
19                       eeeeeeee                 15
19                       xxxxxxxxx                  37
15                       fffffffffffffffff                  10
10                       gggggggg                   null

I need to delete rows according to the following criteria:

* Row with "crs_id = 25" must be deleted (only the second row) because "req = 19" and there is a row with "crs_id = 19" 

* Row with "crs_id = 19" must be deleted (only the first row) because "req = 15" and there is a row with "crs_id = 15"

* Row with "crs_id = 15" must be deleted because "req = 10" and there is a row with "crs_id = 10"

I have been struggling with this issue without a successful result.


​Maybe...

DELETE FROM tbl
WHERE EXISTS (SELECT 1 FROM tbl AS cmp WHERE tbl.req_id = cmp.crs_id)
That probably can be written with USING though I find that syntax a bit hard to read personally.  Might want to compare plans if performance matters.

David J.

pgsql-novice by date:

Previous
From: JORGE MALDONADO
Date:
Subject: Please advice on a query
Next
From: Emiliano Amilcarelli
Date:
Subject: test mail