6.14每日一题: MySQL 的 Union 语句的 Order By

MySQL 的 union 语句主要用于联合查询多表时合并结果集。但是合并结果集后的排序是怎么做的,有点小技巧,分享如下:
假定有语句 A order by field_x ,然后有语句 B order by field_x,在 Union 时,用如下的语法是要报错的:
SELECT field_a, field_b, field_x FROM table_a ORDER BY field_x
UNION
SELECT field_a, field_b, field_x FROM table_b ORDER BY field_x

那正确的做法其实就是:
SELECT field_a, field_b, field_x FROM table_a
UNION
SELECT field_a, field_b, field_x FROM table_b ORDER BY field_x

这就实现两个结果集合并后,对字段 field_x 做了排序

如果要实现对结果集 A 先排序, 再 和 排序后的结果集 B , Union,我们应该这么写:

SELECT * FROM (SELECT field_a, field_b, field_x FROM table_a ORDER BY field_x) ta
UNION
SELECT * FROM (SELECT field_a, field_b, field_x FROM table_b ORDER BY field_x) tb

作者: 甬洁网络

--移动互联网&物联网技术提供商