Re: Please advice on a query

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Please advice on a query
Дата
Msg-id CAKFQuwb=1r9DCzr-sPxG=JBtXRUnEFz-TLvK41KEej_9RK576g@mail.gmail.com
обсуждение исходный текст
Ответ на Please advice on a query  (JORGE MALDONADO <jorgemal1960@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: JORGE MALDONADO
Дата:
Сообщение: Please advice on a query
Следующее
От: Emiliano Amilcarelli
Дата:
Сообщение: test mail