www.cpsh.net > SQL语句中UNION排序问题

SQL语句中UNION排序问题

楼主好,我大致懂你的意思,你应该是想要把两个子查询的数据合并后,然后再排序的.而你的排序出来不对的原因是你在你的两个子查询当中分别做了排序.那么数据库执行后的结果就会是排序后再合并.所以你总是觉得是乱的.你先把子查询合并,然后在b表后面合并就不会这样子了.只用一个order by就可以了.

select * from (select userid from userTable where userid in (201,202)Unionselect userid from userTable where userid in (101,102,301,302)) as aorder by userid答案补充select

select * from(select StartTime,EndTime from table where endtime>getdate() unionselect StartTime,EndTime from table where endtime 评论0 0 0

select * from (select 字段,aDate mydate from Aunion allselect 字段,bDate mydate from B) aorder by a.mydate这样试试

select * from student 专业='计算机'unionselect * from student 专业='英语'--上面这个命令中的union表示将两个select查询结果合并.

由于Union需要对查询结果集进行排序操作,当数据量较大时,若非特殊需要,尽量不要使用Union操作,用Union All操作,然后对Union All出来的结果执行去重操作即可,所以结果不一样-- union allselect '张三' nameunion allselect '李四' union

因为union all是将来年各个查询的结果集拼接在一起,你如果在其中的一个查询中order by,没记错的话会语法错误,假设没语法错误的话,只是对结果集的一部分进行排序,不能达到对整个结果集进行排序的效果,所以是没有意义的如果你想实现对整个结果集进行排序的话,可以在外面order by :select 你想要的字段from (查询1 union all 查询2)order by 排序字段看了你的问题补充:将order by [time] desc 放在ff后边就行啦

用union all吧union是会过滤重复结果并自动排序的,union all是直接合并结果的

1、UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同.2、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录.3、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回.4、从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL.

' product ' 拼接字符串时应为: " product " 觉得问题应该出在这地方,对于开发程序来说,你的写法在这里不会把变量值替换进字符串. 而是直接把' 变量名 '当成字符串的一部分传给了数据库执行. 如果你用来union的三个源表 列数量 和 列类型 都一致,那么在相同位置加上用来做排序的列就没有问题. * ,150 as mark * ,100 as mark

网站地图

All rights reserved Powered by www.cpsh.net

copyright ©right 2010-2021。
www.cpsh.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com