Re: Tricky SQL - assistance appreicated. DDL and DML supplied.

From: Pál Teleki <ellenallhatatlan(at)gmail(dot)com>
To:
Cc: pgsql-novice novice <pgsql-novice(at)postgresql(dot)org>
Subject: Re: Tricky SQL - assistance appreicated. DDL and DML supplied.
Date: 2016-07-04 19:20:58
Message-ID: CAMLfE0MTawc-7cPNpsQvvLFc3M26Au3c+dx+Q21HEcPkDs_JFg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

>> matt=# DELETE from ex where ex_id not in (SELECT t1.ex_id FROM ex t1 join (SELECT c_id, guid, max(ts) mts from ex group by c_id, guid) as t2 on t1.c_id = t2.c_id AND t1.guid = t2.guid AND t1.ts = t2.mts);
>> DELETE 4
>> matt=# SELECT * from ex;
>> ex_id | c_id | guid | supplier | ts
>> -------+------+------+----------+---------------------
>> 3 | 1 | xxxx | 50 | 2016-07-15 22:05:01
>> 4 | 1 | xxxx | 50 | 2016-07-15 22:05:01
>> 7 | 2 | yyyy | 71 | 2016-07-17 22:05:01
>> 8 | 2 | yyyy | 74 | 2016-07-17 22:05:01
>> 9 | 3 | zzzz | 60 | 2016-07-01 22:05:01
>> 10 | 4 | aaaa | 61 | 2016-07-01 22:05:01
>> (6 rows)

Thanks for that - it was what I was looking for.

>
> I believe this solution should work with mysql as well, although I've only done some light testing

Nope! :-) When one runs this query and ones like it in MySQL, it's charming
and quaint (ahem....) dialect of SQL produces the error:

ERROR 1093 (HY000): You can't specify target table 'ex' for update in
FROM clause

So, you have to add a level of nesting to your query to SELECT ex_id
FROM your derived table!
<shakes head.... how on earth did MySQL become more popular than PostgreSQL?>

As it was put so aptly here
(http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update-in-from-clause),
"Sometimes I wonder what drugs the MySQL devs are on..." (found while
searching
for a solution - also to be found in that thread).

Thanks again.

--

Pál Teleki

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Binand Sethumadhavan 2016-07-12 03:01:48 Homegrown Data Warehouse
Previous Message Tom Lane 2016-07-03 15:18:03 Re: Tricky SQL - assistance appreicated. DDL and DML supplied.