我想在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)。它对所有结果进行排序。但我想要的是它应该在每个标题下排序。
发布于 2010-08-20 21:34:21
为此,您可以向每个select添加一个名为rank的伪列,您可以先按该伪列进行排序,然后再按其他条件进行排序,例如:
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发布于 2010-08-20 21:39:01
您可以使用子查询来执行此操作:
select * from (select values1 from table1 order by orderby1) as a
union all
select * from (select values2 from table2 order by orderby2) as b发布于 2011-11-30 21:15:35
(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_datehttps://stackoverflow.com/questions/3531251
复制相似问题