Mysql联合查询UNION和Order by同时使用报错问题的解决办法
|
因此,常常出现这样的错误 之后,也许有人会用到类似的查询 为什么呢?难道UNION和ORDER BY 不能同时存在? union和 order by 当然是可以同时存在的 但是在使用union的时候,联合查询不仅仅是将数据集合合并 再做一个试验来更充分的说明这个问题 创建一个这样的查询 union select * from [IND] where INDID=2
但是,实际上得到的结果是和数据库里数据排列的顺序一样的 12345 因此,可以得出结论,联合查询的结果是整个查询完成后得出的,而不是将子查询挨个完成后拼接的。 union select * from [IND] where INDID=2 order by INDID ASC/DESC
如果是这样,在普通的查询中,TOP是在ORDER BY之后执行的,那么 union select * from [IND] where INDID=2 order by INDID 答案是不可以。 虽然说在单句的查询中,TOP是在ORDER BY 之后执行,但是在联合查询中,这样写,TOP的作用域是在子查询里,因此TOP并没有对联合查询的结果集筛选,而只对它所写在的那条子查询里进行筛选,这就像是子查询里的WHERE语句一样,类似这样的筛选作用范围都是在子查询,不像ORDER BY 作用在整个联合查询。
用 rowcount 比起TOP来说,rowcount作为结果集截取置顶更加规范些,毕竟不是依靠查询语句,而是直接设置查询语句获得结果集的数目。 select * from [IND] where INDID=4 union union order by INDID ASC
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql主从同步备份策略分享
- sql-server – 如何计算SQL Server 2008中存储过程和表的总
- sql-server – SQL Server – 如何在Update命令上提示索引?
- sql-server – SQL – 一次插入和更新多个记录
- SQL Server 最常用的SQL语句
- ‘tail -f’是一个数据库表
- MySql Group By对多个字段进行分组的实现方法
- sql-server – 如何通过SQL Server的xp_cmdshell在Windows命
- 寻找有关嵌入式.NET数据库的指南(例如db4o,NHibernate或Rav
- SQL2008 附加数据库提示 5120错误 解决办法
