上个星期,测试发现了一个分页的bug--- 无论怎么分页数据的一样。我们所有的分页都是用EF 分页,为什么只有一个模块的分页有问题呢?
后来跟了下sql语句,发现用到是sql2012的新分页方式 OFFSET/FETCH NEXT。
下面有两段sql语句 ,
DECLARE @FetchRows tinyint = 8; SELECT * FROM BnC_Store ORDER BY Created_Date ASC OFFSET 0 ROWS FETCH NEXT @FetchRows ROWS ONLY; SELECT * FROM BnC_Store ORDER BY Created_Date ASC OFFSET 8 ROWS FETCH NEXT @FetchRows ROWS ONLY; SELECT * FROM BnC_Store ORDER BY Created_Date ASC OFFSET 16 ROWS FETCH NEXT @FetchRows ROWS ONLY;
select * from BnC_Store order by Created_Date asc OFFSET 0 ROWS FETCH NEXT 8 ROWS ONLY; select * from BnC_Store order by Created_Date asc OFFSET 8 ROWS FETCH NEXT 8 ROWS ONLY; select * from BnC_Store order by Created_Date asc OFFSET 16 ROWS FETCH NEXT 8 ROWS ONLY;
如果数据中Create_Date 的值都一样,可以发现得出的结果是不一样。
如果我们换成 order by ID ,两边的结果是一致的。
所有我个人认为这算是微软 sql2012 的bug
时间: 2024-11-13 20:13:22