问题
I'd like to see the last ten rows from our mysql database in ID order. Naively, I'd expect to be able to do something like this:
SELECT * FROM ( SELECT * FROM things ORDER BY id DESC LIMIT 10) ORDER BY id ASC
but that isn't valid syntax. What's the correct way of expressing the query I'm trying to run?
回答1:
You got that almost right:
SELECT *
FROM
( SELECT * FROM things ORDER BY id DESC LIMIT 10) xxx
ORDER BY id ASC
Note the innocent xxx
after the subselect which you need.
回答2:
Try:
SELECT * FROM (SELECT * FROM things ORDER BY id DESC LIMIT 10) temp
ORDER BY id ASC
You need something like that because here FROM clause is executed even before the SELECT.
来源:https://stackoverflow.com/questions/3255636/can-i-reorder-sql-selections-after-the-limit-has-been-applied