Re: update with from

Поиск
Список
Период
Сортировка
От Sim Zacks
Тема Re: update with from
Дата
Msg-id 4F1E4B74.5050302@compulab.co.il
обсуждение исходный текст
Ответ на Re: update with from  (Adrian Klaver <adrian.klaver@gmail.com>)
Ответы Re: update with from  (Adrian Klaver <adrian.klaver@gmail.com>)
Список 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.

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

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Incomplete startup packet help needed
Следующее
От: Chris Angelico
Дата:
Сообщение: Re: [RFE] auto ORDER BY for SELECT