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