相关疑难解决方法(0)

为什么 SSMS 在表格顶部而不是底部插入新行?

每当我在 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 中是否有某些设置会导致这种不正确的排序?

sql-server ssms identity

14
推荐指数
2
解决办法
1万
查看次数

NOLOCK 提示更改返回记录的顺序

Client字段上有一个聚集索引LastName

当我简单地从表中转储所有记录时,它们会按字母顺序出现,除非(nolock)在相关查询中使用了提示。该提示会更改记录的顺序。应该是?。我很肯定没有其他会话有更改该表的开放事务(至少sp_who2没有向我显示任何内容)。

如何解释顺序上的差异?

从评论中提取的其他信息:

  1. 没有顺序。非聚集索引是否应该强制执行顺序?

  2. 即使使用指定聚集索引的索引提示,查询仍然返回不同的顺序。他们应该吗?我想知道为什么nolock在没有明显改变计划的情况下更改返回记录的顺序。

  3. 我对它们做了一个 WinDiff - 除了 [the] (nolock)[query hint]之外相同。

order-by hints sql-server-2012

11
推荐指数
3
解决办法
2206
查看次数

SQL Server:行顺序

我们都知道一个简单的语句例如:

SELECT * FROM stuff;
Run Code Online (Sandbox Code Playgroud)

应该不会产生有序的结果。然而,当我试图证明这一点时,它总是以主键顺序出现。

此外还有一个声明,例如:

SELECT thing,whatever FROM stuff
GROUP BY thing,whatever;
Run Code Online (Sandbox Code Playgroud)

似乎总是按GROUP BY子句中的最后一个字段对事物进行排序,这根本没有帮助。

问题是,在什么情况下 SQL SERVER 会在未询问的情况下对结果进行排序,我该怎么做才能阻止这种情况?

我试图向我的学生证明,除非指定,否则顺序是不确定的,但这对我的情况没有帮助。

我承认我正在处理一小组样本数据。

谢谢

sql-server order-by select group-by

5
推荐指数
2
解决办法
445
查看次数