SqlServer2005使用top 100 PERCENT 无法排序的问题
由于公司提供的分页控件需要我使用top子句,而且有必要将查询到的记录全部取出,确发现不能排序,sql语句如下:
SELECT TOP 15 * FROM(
SELECT TOP (100) PERCENT * FROM (
SELECT
a.recID, a.eventLevel, a.srcIP, a.dstIP, a.eventTime, a.eventCount, a.srcPort, a.dstPort, b.popular, b.eventName, b.popularName, b.securityID, d.deviceIP, d.deviceName FROM NETIDS_EVENTLOG a, NETIDS_DEFINE_EVENTBASE b, SYSTEM_DEPLOY d WHERE a.eventTypeID=b.eventTypeID AND a.DEV_GUID=d.DEV_GUID
UNION ALL
SELECT
a.recID, a.eventLevel, a.srcIP, a.dstIP, a.eventTime, a.eventCount, a.srcPort, a.dstPort, b.popular, b.eventName, b.popularName, b.securityID, d.deviceIP, d.deviceName FROM NETIDS_EVENTLOG_HISTORY a, NETIDS_DEFINE_EVENTBASE b, SYSTEM_DEPLOY d WHERE a.eventTypeID=b.eventTypeID AND a.DEV_GUID=d.DEV_GUID
) AS _VWFT order by _VWFT.eventtime desc
) AS _VWFT1
困扰了很久,后得知SqlServer使用top 100 PERCENT 会使排序失效。
解决办法有二:
一、下载一个SqlServer2005的补丁包,不推荐开发人员使用(你很难在向用户推销产品的时候找到借口让他费事去整一遍数据库。。)至于是哪个版本的补丁,我也没找到,反正包也不多,有兴趣的可以试下,有结果了还望周知啊~
二、使用select top 99.999999 PERCENT,一般来说,你的数据库不回超过1亿条数据,使用99.999999 PERCENT不会使你遗漏数据。需要的话再添俩9
相关文章
- 机器学习排序之Learning to Rank简单介绍
- 结构体或对象排序
- list对象排序
- Java实现 LeetCode 26 删除排序数组中的重复项
- java实现第四届蓝桥杯快速排序
- linux shell 脚本攻略学习8---md5校验,sort排序,uniq命令详解
- LeetCode(23):合并K个排序链表
- deque容器06之排序操作
- SAP HANA里的中文排序问题
- Atitit order algo 排序算法 算法之道 目录 1.1. 生活中常用的排序是插入排序和选择排序2 2. 0.1 算法分类2 3. .2 算法复杂度3 4. 十大经典排序算法(动图
- 例 8.10 用指针方法对10个整数按由大到小顺序排序。
- 标准库中 vector list等排序
- c++ map 根据value排序 map来单词计数
- Thinkphp 无法使用->order() 排序的两种解决的方法!
- ES搜索排序,文档相关度评分介绍——Field-length norm
- C++算法之排序算法