Ben*_*cka 14 sql-server ssms identity
每当我在 SQL Server Management Studio 2008(数据库是 SQL Server 2005)的表中手动插入一行时,我的新行就会出现在列表的顶部而不是底部。我正在使用身份列,这会导致诸如
id row
42 first row
1 second row
2 third row
Run Code Online (Sandbox Code Playgroud)
当获取行且未明确排序时。当为 Web 应用提取行并更改TOP 1查询返回的内容时,这会导致不同的外观。
我知道我可以order by,但为什么会发生这种情况?我的大部分数据都是通过 Web 应用程序插入的,从该应用程序插入的所有数据都按照先进先出的顺序进行,例如,最新的插入位于底部,因此 ID 都在一行中。服务器或 Management Studio 中是否有某些设置会导致这种不正确的排序?
Aar*_*and 13
只是为了增加其他答案:根据定义,表是一组无序的行。如果不指定ORDER BY子句,SQL Server 可以自由地以它认为最有效的任何顺序返回行。这通常恰好与插入的顺序一致,因为大多数表在标识、日期时间或其他单调递增的列上都有聚集索引,但您应该完全这样对待它:巧合。它可以随着新数据、统计更新、跟踪标志、对 maxdop 的更改、查询提示、对连接或查询中的 where 子句的更改、由于服务包/累积更新/修补程序/升级而对优化器的更改而更改,将数据库移动到不同的服务器等。
换句话说,我知道你已经知道答案了,但还不够清楚:
如果您想依赖查询的顺序,请始终添加
ORDER BY.
| 归档时间: |
|
| 查看次数: |
12033 次 |
| 最近记录: |