北京SEO

Mysql数据库union和order by优先级

2019/10/10/17:37:07  阅读:2623  来源:谷歌SEO算法  标签: Google

在Mysql的参考手册中,并没有对union和order by的优先级进行说明,它建议的方法是,对SQL语句加上(),这样能使SQL的语义更清晰.

例如,需要对union后的结果进行order by,则"

  1. (SELECTaFROMtbl_nameWHEREa=10ANDB=1)
  2. UNION
  3. (SELECTaFROMtbl_nameWHEREa=11ANDB=2)
  4. //开源代码phpfensi.com
  5. ORDERBYaLIMIT10;

如果,需要对单个SQL语句进行order by,则应把order by子句放入圆括号中,如下:

  1. (SELECTaFROMtbl_nameWHEREa=10ANDB=1ORDERBYaLIMIT10)
  2. UNION
  3. (SELECTaFROMtbl_nameWHEREa=11ANDB=2ORDERBYaLIMIT10);

另外注意:圆括号中用于单个SQL语句的ORDER BY只有当与LIMIT结合后,才起作用,否则,ORDER BY被优化去除,我在innodb引擎的2个表上测试了没有加(),进行union和order by的操作,如下:

  1. SELECTaFROMtbl_nameWHEREa=10ANDB=1
  2. UNION
  3. SELECTaFROMtbl_nameWHEREa=11ANDB=2
  4. ORDERBYaLIMIT10;

发现,它默认的结果也是先进行union,然后再order by,和第一种情况执行结果相同,不过,为了逻辑清晰,最好还是加上对应的()比较好.

另外:Mysql中union可以有union,union distinct,union all这3中形式.

union和union distinct会对union后的结果进行排重,保证所有返回的行都是唯一的

union all则会返回所有SELECT语句中得到所有匹配的行.

广告内容

Mysql数据库union和order by优先级 Mysql数据库union和order by优先级 Mysql数据库union和order by优先级

相关阅读

热门评论

木木老贼 木木老贼

互联网营销达人~

总篇数181

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法