碰到个问题,在sqlserver里对取得的数据分页,使用下面的sql:
select top 5000 * from
(
select top 5000 * from (
select top 200000 row_number() OVER (order by auto_id asc) n,t.*
from Hdp_User_Goshop_Log t with(nolock,INDEX = idx_hdp_user_goshop_log_acttime)
where t.acttime > '2014-11-12 09:00' and t.acttime < '2014-11-12 10:00'
) t1
order by t1.n desc
) t2 order by t2.n sac
发现出现的数据并不是想象中的195000到200000,而是380000,最后的解决方式是:
select top 5000 * from
(
select top 5000 * from (
select top 200000 row_number() OVER (order by auto_id asc) n,INDEX = idx_hdp_user_goshop_log_acttime)
where t.acttime > '2014-11-12 09:00' and t.acttime < '2014-11-12 10:00'order by n asc
) t1
order by t1.n desc
) t2 order by t2.n sac
具体原因可能是因为sqlserver中的top的排序问题,sqlserver中如果你没有指定默认排序,很容易出现问题,得到的数据可能不是你预期的合理的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。