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

但是查询结果 的排序却出了问题,排序 失效? 什么情况,一头雾水,后来同事抬眼一瞅,就让我 百度union all的排序,我一查原来union all 后不带 limit 会被mysql 优化器干掉,
2、处理:
所以,sql 改一下就可以:
3、总结:
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。
union 是对数据进行并集操作,不包括重复行,同时进行默认排序
从效率上说,UNION ALL 要比UNION快很多,Union all 是对数据进行并集操作,包括重复行,不进行排序
在union all 后使用 order by 要写 limit 关键字!
本文详细解析了SQL中Union与Union All的区别,尤其是在排序方面的处理方式。通过实例展示了当使用Union All进行数据合并时不带limit关键字,排序将可能失效的问题,并提供了正确的解决方案。
2138

被折叠的 条评论
为什么被折叠?



