【发布时间】:2021-02-17 07:39:58
【问题描述】:
对于 Erp 版本升级,我们复制了数据库并恢复到新的。我们改变了桌子。 (添加新列或更改宽度等。我们删除索引并重新创建)。毕竟我们测试了新数据库,遇到了这样的情况。
我们有一个类似的查询
select top 5 * from table.
旧数据库:当我们连续运行查询时,结果顺序不会改变
新数据库:当我们运行时,结果的顺序发生变化。
我认为存在聚集索引问题,但我不知道如何确定和解决它。有什么帮助吗?
【问题讨论】:
-
您的查询没有
order by,因此您的结果中没有保证顺序。保证特定排序顺序的唯一方法是使用order by -
但是旧的数据库总是一样的
-
那你很幸运。 唯一保证特定排序顺序的方法是使用
order by -
请参考文档docs.microsoft.com/en-us/sql/t-sql/queries/…
The order in which rows are returned in a result set are not guaranteed unless an ORDER BY clause is specified. -
你在 sql (和咨询)中学到了一个不幸和可怕的教训。你的代码有很大的缺陷,现在这个改变暴露了其中一个缺陷。您必须修复您的代码,并且安全的假设是还有其他缺陷等待被发现。
标签: sql sql-server sql-order-by