Re: update with from

From: Sim Zacks <sim(at)compulab(dot)co(dot)il>
To: PostgreSQL general <pgsql-general(at)postgresql(dot)org>
Subject: Re: update with from
Date: 2012-01-24 06:11:00
Message-ID: 4F1E4B74.5050302@compulab.co.il
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 01/23/2012 07:10 PM, Adrian Klaver wrote:
> On Monday, January 23, 2012 7:32:35 am Sim Zacks wrote:
>> On 01/23/2012 05:13 PM, Adrian Klaver wrote:
>
>>
>> When I throw in code to make the select only return the correct rows
>> The select statement takes 9 secs by itself:
>> select a.partid,a.deliverywks
>> from poparts a where popartid in (
>> select b.popartid from poparts b
>> join pos c using(poid)
>> join stock.lastrfqdateperpart d using(partid)
>> where c.isrfq and c.issuedate > d.issuedate-7
>> AND b.unitprice > 0::numeric AND b.quantity >= 100::numeric AND
>> c.postatusid = ANY (ARRAY[40, 41])
>> and b.partid=a.partid
>> order by b.partid,b.unitprice, b.deliverywks
>> limit 1
>> )
>
> To clarify what I posted earlier, my suggestion was based on rewriting the
> second query as:
>
> select b.partid,b.deliverywks b.popartid from poparts b
> join pos c using(poid)
> join stock.lastrfqdateperpart d using(partid)
> where c.isrfq and c.issuedate > d.issuedate-7
> AND b.unitprice > 0::numeric AND b.quantity >= 100::numeric AND
> c.postatusid = ANY (ARRAY[40, 41])
> order by b.partid,b.unitprice, b.deliverywks
> limit 1
>
> I may be missing the intent of your original query, but I think the above gets
> to the same result without the IN.
>

My first query returns all rows of each part ordered such so that the
row I want to actually update the table with is last. This query returns
12000 rows, for the 600 parts I want to update.

My second query with the limit within the subselect gets 1 row per part.
This returns 600 rows, 1 row for each part I want to update.

Your suggestion would only return one row.

See
http://www.pgsql.cz/index.php/PostgreSQL_SQL_Tricks#Select_first_n_rows_from_group
for reference.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Florian Weimer 2012-01-24 08:26:25 Re: Incomplete startup packet help needed
Previous Message Adrian Klaver 2012-01-24 01:47:03 Re: Incomplete startup packet help needed