The last suggestion is useful when you do care which entries you get, as you can use one order for limit and another for presentation. For example, if you'd like the LAST 10 rows, but sorted in FORWARD order, you can use something like
(select * from HISTORY order by version desc limit 10) order by version; And I thought I'd have to wait for subqueries... Date: Thu, 22 Apr 2004 10:35:17 -0500 To: "Keith C. Ivey" <[EMAIL PROTECTED]>, [EMAIL PROTECTED] From: Paul DuBois <[EMAIL PROTECTED]> Subject: Re: first LIMIT then ORDER At 11:21 -0400 4/22/04, Keith C. Ivey wrote: >On 22 Apr 2004 at 12:31, Johan Hook wrote: > >> Assuming you want to order your arbitrary selection you could >> do something like: >> (SELECT t.Id FROM tab t LIMIT 10) >> UNION ALL >> (SELECT t.Id FROM tab t WHERE 1 < 0) >> ORDER BY t.Id > >You don't even need to include the dummy query. You can do a UNION >of one result set. This should work: > > (SELECT t.Id FROM tab t LIMIT 10) > ORDER BY t.Id > >I wrote this comment on the mysql.com site: > > It's not documented above, but you can use ORDER BY on a UNION > that consists of only one SELECT (and thus doesn't actually > include the word "UNION"). Suppose you want the last 5 entries > in a table, but you want them in ascending order. You can use > this query: > > ( SELECT * FROM table_name ORDER BY ranking DESC > LIMIT 5 ) ORDER BY ranking; > > Similarly, you could select the top 10 records from a table > ordered by one column and then sort them alphabetically by > another column. > >Now, the fact that the syntax isn't documented may mean that it will >disappear, but it's reasonable and useful. I doubt if it will disappear. I think this is a better suggestion than using a temporary table. Thanks. -- Paul DuBois, MySQL Documentation Team Madison, Wisconsin, USA MySQL AB, www.mysql.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]