【发布时间】:2020-06-05 13:06:56
【问题描述】:
我们有一个大型应用程序。最近,我们升级了数据库 MS SQL 2016。因此,我们在一些报告中遇到了输出顺序问题。不幸的是,我们无法更改应用程序的源代码,并且暂时无法这样做。这种行为的原因是某些格式为“SELECT * FROM table”的查询没有“ORDER BY”子句。
有没有创造性的方式来排序输出?喜欢在 SELECT 上添加触发器?还有什么办法吗?任何类型的索引都会成为 ORDER 默认值?
更新:我无法更改源代码。这是已编译的应用程序,升级周期还有几个月。如果可以的话,我会浏览源代码并更改这些查询。
【问题讨论】:
-
我不认为您可以将其他查询变成子查询?
SELECT t.* FROM (unchangeable application query here) as t ORDER BY t.column -
按顺序使用视图,并让您的报告选择这些视图。
-
@MarcGuillot - 视图也是无序的。不幸的是,即使是 SSMS 也会出错并生成代码,让您看起来可以订购视图。有时它看起来很有效,但决不能保证保持一致。
-
好吧,你永远不应该依赖没有 explixit
order by的结果集的“顺序”。让我想起了视图中使用的select top 100 percent以便能够添加order by,当 SQL Server 优化它的客户抱怨 我们的应用程序损坏 :-) -
如果您不在数据库中订购,则需要在应用程序中订购。这就是 SQL 的规律。
标签: sql sql-server sql-order-by sql-server-2014