Why must SELECT DISTINCT, ORDER BY expressions must appear in target list?

Started by Dave Smithabout 23 years ago2 messagesgeneral
Jump to latest
#1Dave Smith
dave.smith@candata.com

For this query ..

SELECT DISTINCT t0_s.rec_num FROM sample_request t0_s,
sample_request_line_item t1_li WHERE (t1_li.fulfillment_status =
'Shipped'
AND t1_li.followup_date <= '2003-02-04 20:00:00.000000000+00' AND
(t1_li.customer_prospect_feedback IS NULL OR
t1_li.customer_prospect_feedback = '')) AND
(t0_s.rec_num=t1_li.parentRequest) ORDER BY t0_s.date_of_request DESC

I get this error.

ERROR: For SELECT DISTINCT, ORDER BY expressions must appear in target
list

This seems like a bug. Why do I need date_of_request in the select
section? SQL Spec?

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Dave Smith (#1)
Re: Why must SELECT DISTINCT, ORDER BY expressions must appear in target list?

Dave Smith <dave.smith@candata.com> writes:

ERROR: For SELECT DISTINCT, ORDER BY expressions must appear in target
list

This seems like a bug.

No, it isn't. Consider

SELECT DISTINCT x FROM tab ORDER BY y;

Assuming there are multiple values of y for any given x, how would you
expect the result to be sorted? It's ill-defined.

regards, tom lane