Mysql:使用union all时使用order by和limit到单独的查询

Posted

技术标签:

【中文标题】Mysql:使用union all时使用order by和limit到单独的查询【英文标题】:Mysql: Use order by and limit into separate queries when using union all 【发布时间】:2018-05-08 10:40:37 【问题描述】:

我知道 mysql 语法不允许我们做我正在寻找的事情,但我要求解决我的问题。

我想运行多个查询并使用 union 来显示完整的数据集,方法是使用 order by 和 limit 每个查询。由于法律问题,我使用了虚假的参数和表名。

select 
    x,
    y,
    z
from tbl1
where z = 'xxxx'
and y = 111
and x = 'text'
order by rand()
limit 11966
union all
select 
    x,
    y,
    z
from tbl1
where z = 'xxxx'
and y = 222
and x = 'text'
order by rand()
limit 3560
union all
select
.
.
.
.
.

有人知道解决方法吗?

【问题讨论】:

【参考方案1】:

使用括号:

(select ... order by ... limit ...) 
union all
(select ... order by ... limit ...) 
union all
(select ... order by ... limit ...) 
union all
...

【讨论】:

以上是关于Mysql:使用union all时使用order by和limit到单独的查询的主要内容,如果未能解决你的问题,请参考以下文章

使用UNION后,ORDER BY 怎样使用

在android中使用UNION ALL时如何对特定语句使用order by

mysql数据库多个表union all查询并排序的结果为啥错误

UNION ALL、UNION与ORDER BY

为啥在mysql中第一个union两个子句的order by不起作用

如何在 union all 中使用 order by