Mysql数据库union和order by优先级
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-25 17:22:18 浏览: 评论:0
在Mysql的参考手册中,并没有对union和order by的优先级进行说明,它建议的方法是,对SQL语句加上(),这样能使SQL的语义更清晰.
例如,需要对union后的结果进行order by,则"
- (SELECT a FROM tbl_name WHERE a=10 AND B=1)
- UNION
- (SELECT a FROM tbl_name WHERE a=11 AND B=2)
- //开源代码phpfensi.com
- ORDER BY a LIMIT 10;
如果,需要对单个SQL语句进行order by,则应把order by子句放入圆括号中,如下:
- (SELECT a FROM tbl_name WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
- UNION
- (SELECT a FROM tbl_name WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
另外注意:圆括号中用于单个SQL语句的ORDER BY只有当与LIMIT结合后,才起作用,否则,ORDER BY被优化去除,我在innodb引擎的2个表上测试了没有加(),进行union和order by的操作,如下:
- SELECT a FROM tbl_name WHERE a=10 AND B=1
- UNION
- SELECT a FROM tbl_name WHERE a=11 AND B=2
- ORDER BY a LIMIT 10;
发现,它默认的结果也是先进行union,然后再order by,和第一种情况执行结果相同,不过,为了逻辑清晰,最好还是加上对应的()比较好.
另外:Mysql中union可以有union,union distinct,union all这3中形式.
union和union distinct会对union后的结果进行排重,保证所有返回的行都是唯一的
union all则会返回所有SELECT语句中得到所有匹配的行.
Tags: Mysql优先级 union优先级
- 上一篇:MySQL写入插入数据优化配置
- 下一篇:MySQL创建全文索引学习笔记
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)