SqlServer使用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

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值