最近使用SQL语句进行UNION查询,惊奇的发现:SQL没问题,UNION查询也没问题,都可以得到想要的结果,可是在对结果进行排序的时候,却出问题了。

1.UNION查询没问题

[sql] view plaincopy
  1. SELECT `id`,`username`,`mobile`,`time`,id AS leader
  2. FROM `grouporder_leader`
  3. WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1
  4. UNION ALL
  5. SELECT leadorderid,username,mobile,time,null
  6. FROM `grouporder_partner`
  7. WHERE courseid=21 and status=1 and merchid=23

结果如下

2.排序就出问题了

[sql] view plaincopy
  1. SELECT `id`,`username`,`mobile`,`time`,id AS leader
  2. FROM `grouporder_leader`
  3. WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1
  4. ORDER BY time DESC
  5. UNION ALL
  6. SELECT leadorderid,username,mobile,time,null
  7. FROM `grouporder_partner`
  8. WHERE courseid=21 and status=1 and merchid=23
  9. ORDER BY time DESC

执行这条SQL语句之后就报错。

3.创建临时表

使用类似于创建临时表的方法保存查询结果,然后对临时表进行查询排序。

[sql] view plaincopy
  1. SELECT id,username,mobile,time,leader
  2. FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader
  3. FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1
  4. UNION ALL
  5. SELECT leadorderid,username,mobile,time,null
  6. FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
  7. )
  8. ORDER BY time DESC

4.起别名

不知道为什么第3步中查询依旧没有,然后对UNION查询的结果起个别名,然后再查询排序就没问题了。

[sql] view plaincopy
  1. SELECT a.id,a.username,a.mobile,a.time,a.leader
  2. FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader
  3. FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1
  4. UNION ALL
  5. SELECT leadorderid,username,mobile,time,null
  6. FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
  7. ) AS a
  8. ORDER BY time DESC

结果就正确了

查出来就好说了,再进行去重或者其他操作,也没问题.

[sql] view plaincopy
  1. SELECT DISTINCT a.id,a.username,a.mobile,FROM_UNIXTIME(a.time,'%Y/%m/%d') as _time,a.leader
  2. FROM (SELECT `id`,`username`,`mobile`,`time`,id AS leader
  3. FROM `grouporder_leader` WHERE `courseid` = 21 AND `merchid` = 23 AND `status` = 1
  4. UNION ALL
  5. SELECT leadorderid,username,mobile,time,null
  6. FROM `grouporder_partner` WHERE courseid=21 and status=1 and merchid=23
  7. ) AS a
  8. ORDER BY time DESC

SQL用了Union后的排序问题相关推荐

  1. 踩坑,union后数据少了

    union后数据少了,不能包含重复行 之前一直关注union在两个表的连接后出现的不包含重复行,我这次是在分组数据后进行两个结果集的union.分组后的数据如下,出现了两个时间完全相同的数据,导致了我 ...

  2. 微软sql服务器关闭了会怎样,sql server 服务启动后 自动关闭 求

    当前位置:我的异常网» Sql Server » sql server 服务启动后 自动关闭 求 sql server 服务启动后 自动关闭 求 www.myexceptions.net  网友分享于 ...

  3. SQL Server 安装好后 Always On群组配置

    需要对SQL Server必要的端口打开Windows防火墙的入站规则,比如TCP- 1433端口等. 特别注意:由于AG默认需要用到TCP-5022端口,所以该端口务必保证在Windows防火墙中开 ...

  4. SQL Server 2000卸载后重新安装的问题

    1.安装SQL Server 2000出现"以前进行的程序安装创建了挂起的文件操作"的解决办法: a.在开始->运行中输入regedit b.到HKEY_LOCAL_MACH ...

  5. SQL Server 2005 安装后,没有Management Studio管理工具的解决办法

    如果您在安装SQL Server 2005之前安装了Visual Studio .NET 2005或2008,并且在安装VS时选择了SQL Server 2005 Express,那么很不幸,SQL ...

  6. C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题

    C# Winfrom DataGridView DataSource绑定数据源后--解决排序问题 参考文章: (1)C# Winfrom DataGridView DataSource绑定数据源后-- ...

  7. SQL SERVER数据库置疑后恢复步骤

    --SQL SERVER数据库置疑后恢复步骤    --1. 恢复步骤:    --a.将smlog_log.ldf文件备份到其它目录下:    --b.将源目录下的smlog_log.ldf文件改名 ...

  8. Sql Server 2008卸载后再次安装一直报错

    sql server 2008卸载之后再次安装一直报错问题. 第一:由于上一次的卸载不干净,可参照百度完全卸载sql server2008 的方式 1. 用WindowsInstaller删除所有与S ...

  9. 浪潮通软技术论坛--用SQL恢复浪潮数据后的处理问题!!!!

    浪潮通软技术论坛--用SQL恢复浪潮数据后的处理问题!!!! 用SQL恢复浪潮数据后的处理问题!!!!               我要恢复的是cwbase1 ,   我的SQL备份在原来的电脑上帐套 ...

最新文章

  1. 数据库启动提示: ORA-27102: out of memory
  2. 域名状态:运营商设置了客户禁止删除保护?过期域名也不能注册为什么?
  3. Java连接Elasticsearch6.xxx 代码高亮显示篇四
  4. axure命令行_axure怎么做计算器
  5. 微异构Embree照片级光线追踪解决方案
  6. python开发sqlite3完整_python开发_sqlite3_绝对完整
  7. 前端-页面性能调试:Hiper
  8. js 将input、textarea、Select等控件替换成标签(span)
  9. apusic6.0需要新项目需要改动文件
  10. Linux下Oracle数据库的启动过程、关闭过程
  11. Wsus 清理的计划任务
  12. Android 应用程序签名
  13. 奔图打印机显示未连接_奔图打印机常见故障及解决方法
  14. 『原创』老范的XML文档编辑程序——不是一般的山寨!(原创附程序)
  15. C++常用的大小写转换的方法
  16. android app 瘦身,android 将程序移入system/app 为系统瘦身
  17. 如何在阿里云物联网平台新增一个设备
  18. 第一届程序设计竞赛题解(E题)
  19. LTE-A载波聚合技术(14)---PHICH
  20. BIO和NIO有啥区别?为啥要使用-Netty!一文说清!

热门文章

  1. Sql Server 清除日志的存储过程 Procedure of cleaning sql server's log
  2. UA MATH564 概率论 多元随机变量的变换 理论与应用2
  3. UA MATH564 概率论III 期望
  4. C语言a+++b的问题
  5. Java 中的字符串(String)与C# 中字符串(string)的异同
  6. 在Android中使用OpenGL ES开发第(五)节:GLSL基础语法
  7. Spring常用注解总结
  8. Could not calculate build plan: Plugin org.apache.maven.plugins:maven-war-plugin:2.4
  9. Android Configuration change引发的问题及解决方法
  10. 在中国Windows Azure服务中创建应用程序的一些不同之处