相关疑难解决方法(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万
查看次数

阻止 SQL Server 对结果进行排序?

我正在教一门课,我想向我的学生证明,如果没有明确的ORDER BY. 我观察到即使ORDER BY查询中不存在SQL Server 似乎也返回有序结果。这是一个问题,因为我担心我的学生会在这一点上感到困惑。

观察到的行为示例:

  • 默认情况下,数据似乎按主键顺序排列,即使主键是非集群的。
  • 如果我使用GROUP BY,结果集似乎按最后一列的顺序排列。
    例如GROUP BY this, that,以数据的顺序结束,这很奇怪,尤其是在没有索引的情况下。

我还没有在其他数据库(如 MySQL、PostgreSQL 和 SQLite)中观察到这种行为。SQL Server 是否有一些根本不同的地方,即使没有ORDER BY?

现在在我看来,在没有被询问的情况下对数据进行排序是一个额外的不必要步骤,会浪费处理时间。真的吗?

是否有某种全局设置可以禁用这种行为?有没有办法让 SQL Server 停止对数据进行排序?

这也使得向学生证明数据不是自动排序的变得更加困难。

谁能给我一个简单的演示脚本,显示结果从执行到执行的变化顺序?

sql-server order-by group-by nonclustered-index

6
推荐指数
3
解决办法
6487
查看次数

为什么在两个相同的 MariaDB 实例中对相同数据进行相同查询时会得到不同的排序?

我有两个容器。两者是相同的。两者都是使用两个不同服务器上的相同docker-compose.yml文件启动的。两者具有相同的数据。完全相同(一个在另一个中备份并恢复)。

然而,对于同一查询,我得到了不同的排序。

这是我的查询:

SELECT `i`.`Id`, 
       `i`.`Guid`, 
       `i`.`Key`, 
       `i`.`Name`, 
       `i`.`Order`, 
       `i`.`PartTypeId`, 
       `i`.`PartTypeKey`, 
       `i`.`SectionId`, 
       `i`.`SectionKey`
FROM `ItemPartViews` AS `i`
WHERE `i`.`SectionId` = 7
ORDER BY `i`.`Order`
Run Code Online (Sandbox Code Playgroud)

这些是结果的图像:

在此输入图像描述在此输入图像描述

我不明白为什么我会得到不同的排序。任何解释表示赞赏。

mariadb

1
推荐指数
1
解决办法
515
查看次数