Mysql union all 后order by 失效的问题

目录

情形:

处理:

总结:

 

1、情形:              

          最近写sql 的时候遇到这么一个状况: 查询一个树,前台送来当前节点的id,需要返回当前节点和该节点下的所有子节点,并且以sort字段排序。

         我的sql是这样的:

Mysql union all 后order by 失效的问题_第1张图片

 但是查询结果 的排序却出了问题,排序 失效?  什么情况,一头雾水,后来同事抬眼一瞅,就让我 百度union all的排序,我一查原来union all 后不带 limit 会被mysql 优化器干掉,

2、处理:

所以,sql 改一下就可以:
Mysql union all 后order by 失效的问题_第2张图片

3、总结:

 

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。

union 是对数据进行并集操作,不包括重复行,同时进行默认排序

从效率上说,UNION ALL 要比UNION快很多,Union all 是对数据进行并集操作,包括重复行,不进行排序

在union all 后使用 order by 要写 limit 关键字!

 


 

你可能感兴趣的:(数据库)