ata*_*ata 0 ado.net datareader
我有一个SELECT查询,产生多个结果,没有任何ORDER BY子句.如果我多次执行此查询然后使用DataReader.NextResult()迭代结果,我是否可以保证以相同的顺序获得结果?
例如,如果我执行以下返回199行的查询:
SELECT * FROM products WHERE productid < 200
Run Code Online (Sandbox Code Playgroud)
我总能得到productid = 1的第一个结果,依此类推?
据我所知,它始终以相同的顺序返回结果,但我找不到任何有关此行为的文档.
======================================
根据我的研究:查看此博客Conor vs. SQL.我实际上想问一下,即使表中的数据保持不变(即没有更新或删除),查询结果是否也会改变.但似乎在大表的情况下,当SQL服务器员工并行时,顺序可以不同
首先,要迭代a中的行DataReader,你应该调用Read,而不是NextResult.如果您的查询有多个语句,则
调用NextResult将移至下一个结果集SELECT.
要回答你的问题,你不能依赖于此.
没有ORDER BY子句的查询将以SQL Server的默认迭代顺序返回行.
对于小型表,这通常是添加行的顺序,但这不保证,并且可能随时更改.例如,如果表被索引或分区,则顺序将不同.
| 归档时间: |
|
| 查看次数: |
2383 次 |
| 最近记录: |