首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中使用union和order by子句

问在mysql中使用union和order by子句
EN

Stack Overflow用户
提问于 2010-08-20 21:29:04
回答 14查看 197.6K关注 0票数 140

我想在mysql查询中使用order by和union。我正在获取基于不同标准的不同类型的记录,从一个基于距离的表中搜索我的网站。第一个select查询返回与准确的地点搜索相关的数据。第二个select查询返回与距离搜索位置不到5公里的距离相关的数据。第三个select查询返回与距离搜索地点5-15公里内的距离相关的数据。

然后我使用联合来合并所有结果,并显示在一个带有分页的页面上。在适当的标题下,如'Exact search results','Results as 5 kms'等

现在我想根据id或add_date对结果进行排序。但是当我在查询的末尾添加order by子句时( query1联合查询2联合查询3 order by add_date)。它对所有结果进行排序。但我想要的是它应该在每个标题下排序。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-08-20 21:34:21

为此,您可以向每个select添加一个名为rank的伪列,您可以先按该伪列进行排序,然后再按其他条件进行排序,例如:

代码语言:javascript
复制
select *
from (
    select 1 as Rank, id, add_date from Table 
    union all
    select 2 as Rank, id, add_date from Table where distance < 5
    union all
    select 3 as Rank, id, add_date from Table where distance between 5 and 15
) a
order by rank, id, add_date desc
票数 249
EN

Stack Overflow用户

发布于 2010-08-20 21:39:01

您可以使用子查询来执行此操作:

代码语言:javascript
复制
select * from (select values1 from table1 order by orderby1) as a
union all
select * from (select values2 from table2 order by orderby2) as b
票数 48
EN

Stack Overflow用户

发布于 2011-11-30 21:15:35

代码语言:javascript
复制
(select add_date,col2 from table_name) 
  union 
(select add_date,col2 from table_name) 
  union 
(select add_date,col2 from table_name) 

order by add_date
票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3531251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档