关于sqlserver中的表嵌套查询数据错乱的问题
2014-11-13 20:36
246 查看
碰到个问题,在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, 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'order by n asc
) t1
order by t1.n desc
) t2 order by t2.n sac
具体原因可能是因为sqlserver中的top的排序问题,sqlserver中如果你没有指定默认排序,很容易出现问题,得到的数据可能不是你预期的合理的数据。
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, 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'order by n asc
) t1
order by t1.n desc
) t2 order by t2.n sac
具体原因可能是因为sqlserver中的top的排序问题,sqlserver中如果你没有指定默认排序,很容易出现问题,得到的数据可能不是你预期的合理的数据。
相关文章推荐
- 关于EXCEL数据导入到SQLSERVER中字段存在NULL的问题
- 关于sqlserver的自动生成包含数据的insert脚本问题
- 关于对sqlserver进行大量数据操作,连接池满的问题--转载
- 关于BaseAdapter,SimpleAdapter的数据显示错乱问题,选中状态错乱问题,Checkbox选中状态错乱问题总结
- 关于myBatis与SQLserver 配合使用,查询类型为Date的数据时,日期会减少两天的问题
- 关于sqlserver和ORACLE之间数据交换的问题
- 关于Adapter调用notifyItemRemoved后数组越界和数据错乱的问题
- 关于 android listview 加载数据错位(错乱)问题
- sqlserver关于 数据损坏|修复 问题
- 关于EXCEL数据导入到SQLSERVER中字段存在NULL的问题
- 关于EXCEL数据导入到SQLServer中字段存在NULL的问题
- 关于EXCEL数据导入到SQLServer中字段存在NULL的问题
- 关于传入不同参数请求同一Ajax后返回数据显示错乱的问题
- 关于mysql数据库中数据输入问题
- 关于脏字典过滤问题-用正则表达式来过滤脏数据
- 关于WEB标准中使用表格存放数据的问题和单元格背景的变色
- asp关于田字数据显示问题
- 关于在BSTR中存储二进制数据的若干问题
- 关于连接SQLSERVER2005数据出现Net Authenticated权限问题
- 一组关于手持移动设备使用安全问题的统计数据