3 回答
TA贡献1839条经验 获得超15个赞
您可以通过为每个选择添加一个名为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
TA贡献1963条经验 获得超6个赞
您可以使用子查询来执行此操作:
select * from (select values1 from table1 order by orderby1) as a
union all
select * from (select values2 from table2 order by orderby2) as b
TA贡献1757条经验 获得超8个赞
联合查询只能有一个主ORDER BY子句IIRC。为了得到这一点,在每个查询组成更大的UNION查询,添加一个字段,将在是你的一个字段排序UNION的ORDER BY。
例如,您可能会遇到类似
SELECT field1, field2, '1' AS union_sort
UNION SELECT field1, field2, '2' AS union_sort
UNION SELECT field1, field2, '3' AS union_sort
ORDER BY union_sort
该union_sort字段可以是您可能要排序的任何内容。在此示例中,恰好是将结果从第一个表放在第一位,将第二个表放在第二位,依此类推。
添加回答
举报