源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Mysql联合查询UNION和Order by同时使用报错问题的解决办法

  • 时间:2022-06-29 01:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Mysql联合查询UNION和Order by同时使用报错问题的解决办法
因此,常常出现这样的错误
[u]复制代码[/u] 代码如下:
select * from [IND] where INDID>10 union select * from [IND] where INDID<9
目前为止,还没有出现问
之后,也许有人会用到类似的查询
[u]复制代码[/u] 代码如下:
select * from [IND] where INDID>10 order by INDID desc union select * from [IND] where INDID<9 order by INDID desc
此时就出现问题了,数据库报错。问题就出在order by上
为什么呢?难道UNION和ORDER BY 不能同时存在? union和 order by 当然是可以同时存在的 但是在使用union的时候,联合查询不仅仅是将数据集合合并 他并不是将每个子查询一个一个查询出来后联接在一起,数据库是将整段查询语句理解之后统一查询得到的是整个的数据集合 另外order by在一个数据集合查询里也只能出现一次并且出现在最后。 因此,在联合查询里,order by 要写在最后一个子查询之后,并且,该排序是对整个联合查询出来的结果集排序的,并不是只对最后一个子查询排序
[u]复制代码[/u] 代码如下:
select * from [IND] where INDID>10 union select * from [IND] where INDID<9 order by INDID desc
这样就可以对我们联合查询出来的结果集进行整体排序,而不是只对最后一个子查询的结果集排序。
再做一个试验来更充分的说明这个问题 创建一个这样的查询
[u]复制代码[/u] 代码如下:
select * from [IND] where INDID=4
union select * from [IND] where INDID=2 union select * from [IND] where INDID=1 union select * from [IND] where INDID=5 union select * from [IND] where INDID=3
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部