ORDER BY 和 LIMIT 后的 UNION

2021-09-14 00:00:00 sql union mysql sql-order-by

我的目标是执行两个不同的查询,然后将它们组合起来.
我的代码是:

My goal is to execute two different queries and then combine them.
My code is:

SELECT * FROM some tables WHERE ... ORDER BY field1 LIMIT 0,1 
UNION   
SELECT * FROM some tables WHERE ...

我收到以下错误:

#1221 - UNION 和 ORDER BY 的错误使用

#1221 - Incorrect usage of UNION and ORDER BY

ORDER BY 仅用于第一个查询很重要.我该如何执行此任务?

It is important that ORDER BY is only for the first query. How can I perform this task?

推荐答案

您可以使用括号来允许对单个查询使用 ORDER/LIMIT:

You can use parenthesis to allow the use of ORDER/LIMIT on individual queries:

(SELECT * FROM some tables WHERE ... ORDER BY field1 LIMIT 0, 1)
UNION   
(SELECT * FROM some tables WHERE ...)
ORDER BY 1   /* optional -- applies to the UNIONed result */
LIMIT 0, 100 /* optional -- applies to the UNIONed result */

相关文章