union之后排序,sql中的union all

  union之后排序,sql中的union all

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

  1.联盟查询没问题

  从“group order _ leader”中选择“id”、“username”、“mobile”、“time”、“idasleader ”,其中“courseid ”=21,“merchid ”=23,“status ”=1

  结果如下

  2.排序就出问题了

  SELECT`id `、` username `、` mobile `、` time `、idasleaderfrom ` group order _ leader `其中` courseid `=21,merchid `=23,status `=1 orderbytimedesunionallselectleadorderid,username,mobile,time,null from ` group order _ partner `其中courseid=21,status=1,merchid=23 orderbytimedesc

  执行这条结构化查询语言语句之后就报错。

  3.创建临时表

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

  SELECTid,username,mobile,time,leaderFROM(SELECT`id `,` username `,` mobile `,` time `,idasleader from ` group order _ leader ` where ` courseid `=21 and ` merchid `=23 and ` status `=1 unionallselectleadorderid,username,mobile,time,null from ` group order _ partner ` where courseid=21 and status=1 and merchid=23)ORDERBYtimeDESC

  4.起别名

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

  SELECTa.id,a.username,a.mobile,a.time,a.leaderFROM(SELECT`id,` username,` mobile,` time),idasleader from ` group order _ leader ` where ` courseid `=21 and ` merchid `=23 and ` status `=1 unionallselectleadorderid,username,mobile,time,null from ` group order _ partner ` where courseid=21 and status=1 and merchid=23)ASaORDERBYtimeDESC

  结果就正确了

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

  SELECTDISTINCTa.id,a.username,a.mobile,FROM_UNIXTIME(a.TIME, %Y/%m/%d)as_time,a.leaderFROM(SELECT`id,` username `,` mobile `,` TIME `,idasleader FROM ` group order _ leader ` where ` courseid `=21 and ` merchid `=23 and ` status `=1 unionallselectleaderid,username,mobile,TIME,null FROM ` group order _ partner ` where courseid=21 and status=1 and

union之后排序,sql中的union all