how about (untested)
select *
from
(
SELECT DISTINCT ON (linkid) *
FROM all_links
WHERE uid='2' AND DATE_TRUNC('day',read_date) = DATE_TRUNC('day',TIMESTAMP '2005-06-01')
ORDER BY linkid
) A
ORDER BY read_date DESC limit 100
---------- Original Message -----------
From: FC <lne-1mc8@myamail.com>
To: pgsql-general@postgresql.org
Sent: Wed, 1 Jun 2005 16:40:48 +0200
Subject: [GENERAL] SQL question.
> Hello SQL Aces !
>
> I want to do a select on a table distinct on linkid and sorted by
> date. I have try this
>
> SELECT DISTINCT ON (linkid) * FROM all_links
> WHERE uid='2' AND DATE_TRUNC('day',read_date) = DATE_TRUNC('day',
> TIMESTAMP '2005-06-01') ORDER BY linkid, read_date;
>
> With this request "works" but the raws are sorted as I want. To have
> the rows sorted by date I have done this using a temporary table and
> that works exactly as I want.
>
> CREATE LOCAL TEMP TABLE temp_links WITHOUT OIDS AS
> SELECT DISTINCT ON (linkid) * FROM all_links
> WHERE uid='2' AND DATE_TRUNC('day',read_date) = DATE_TRUNC('day',
> TIMESTAMP '2005-06-01') ORDER BY linkid;
>
> SELECT * from temp_links ORDER BY read_date DESC limit 100
>
> My question is... How can I do the same thing in the more efficient
> way and without using a temporary table. Since I am using PHP and the
> table is not deleted at the end of the program because PHP keeps the
> connection to the database open.
>
> Thanks for any suggestions.
> Fred
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo@postgresql.org)
------- End of Original Message -------