instead of 
> SELECT name, (CASE WHEN bar = 34 THEN 0 ELSE 1 END) AS rank> FROM foo> WHERE 
> bar = 34> OR baz > 100> ORDER BY rank ASC, baz DESC> LIMIT 5;
you can use order the query evaluation to perform inner subquery first
 
select distinct foo.name,foo.bar,baz.bar from foo where exists (select * from 
foo baz where baz.baz>100 LIMIT 5) 
where foo.bar=34order by foo.rank LIMIT 5
 
which then feeds correlated records to outer query 
(which then yields results based on sort-merge of inner then outer queries)
 
HTHMartin Gainty ______________________________________________ Disclaimer and 
confidentiality note Everything in this e-mail and any attachments relates to 
the official business of Sender. This transmission is of a confidential nature 
and Sender does not endorse distribution to any party other than intended 
recipient. Sender does not necessarily endorse content contained within this 
transmission. > From: [EMAIL PROTECTED]> To: mysql@lists.mysql.com> Subject: 
Result ordering> Date: Sun, 30 Nov 2008 23:33:47 +0100> > > Hi, I'm retrieving 
the name of some records where either one of two > criteria are satisfied:> > 
SELECT name> FROM foo> WHERE bar = 34> OR baz > 100> ORDER BY baz DESC> LIMIT 
5;> > I would like to sort that result set, such that the records matching > 
bar = 34 occur before records with baz > 100. I could do this using a > CASE:> 
> SELECT name, (CASE WHEN bar = 34 THEN 0 ELSE 1 END) AS rank> FROM foo> WHERE 
bar = 34> OR baz > 100> ORDER BY rank ASC, baz DESC> LIMIT 5;> > But I need the 
name DISTINCT, how can I accomplish this? I could wrap > the above select in a 
SELECT DISTINCT name FROM (SELECT ... ) but is > there a nicer way to use the 
"rank" than including it in the result set?> > Thanks!> > Morten> > > -- > 
MySQL General Mailing List> For list archives: http://lists.mysql.com/mysql> To 
unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]> 
_________________________________________________________________
Access your email online and on the go with Windows Live Hotmail.
http://windowslive.com/Explore/Hotmail?ocid=TXT_TAGLM_WL_hotmail_acq_access_112008

Reply via email to