关于网友提出的“ union排序的问题”问题疑问,本网通过在网上对“ union排序的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: union排序的问题
描述: 在一个视图里用了union 在首页显示前几条出来 每个分类都按照最新的时间排序
如下:
select top 10 id,title,time,kid from News where kid = 1 ORDER BY time DESC
UNION
select top 6 id,title,time,kid from News where kid = 5 ORDER BY time DESC
UNION
select top 8 id,title,time,kid from News where kid = 3 ORDER BY time DESC
UNION
select top 8 id,title,time,kid from News where kid = 7 ORDER BY time DESC
UNION
select top 6 id,title,time,kid from News where kid = 6 ORDER BY time DESC
UNION
select top 10 id,title,time,kid from News where kid = 2 ORDER BY time DESC
单个语句的话 按最新时间排序是没问题的 可是这6个合起来 就不对了
帮帮忙 谢谢了
解决方案1: select * from (
select top 10 id,title,time,kid from News where kid = 1
UNION
select top 6 id,title,time,kid from News where kid = 5
UNION
select top 8 id,title,time,kid from News where kid = 3
UNION
select top 8 id,title,time,kid from News where kid = 7
UNION
select top 6 id,title,time,kid from News where kid = 6
UNION
select top 10 id,title,time,kid from News where kid = 2 ) ORDER BY time DESC
你是相对整体排序吧
解决方案2:
能实现吗?
解决方案3: 也可以外面使用时order by,.net的linq
解决方案4: 建个表变量啊,先都插进去,然后再select order by
解决方案5: 9楼的按说是没有问题的!
解决方案6:
UNION ALL 就可以了
重复数据是否会产生那是跟他select出来的结果有关
解决方案7: 改用UNION ALL
解决方案8:
你需要再对union之后的查询结果在排序。
select b.* from
(
select top 10 id,title,time,kid from News where kid = 1 ORDER BY time DESC
UNION
select top 6 id,title,time,kid from News where kid = 5 ORDER BY time DESC
UNION
select top 8 id,title,time,kid from News where kid = 3 ORDER BY time DESC
UNION
select top 8 id,title,time,kid from News where kid = 7 ORDER BY time DESC
UNION
select top 6 id,title,time,kid from News where kid = 6 ORDER BY time DESC
UNION
select top 10 id,title,time,kid from News where kid = 2 ORDER BY time DESC
) b order by b.time desc
解决方案9: 在这个SQL语句的外面套一个select * from 你的union集合 order by time desc
解决方案10: 楼主是想要kid = 1 前10条(按时间降序)后门进跟着kid=5的前6条(按时间降序)……?这样显示吗?
以上介绍了“ union排序的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2019854.html