问题描述
我们正在尝试确认Oracle的预期行为,因为它如何处理许多数据点具有相同值的列的排序。例如,如果我查询下表并在数据列上排序,则可能会在每个查询上更改结果顺序,例如下面的两次迭代。
(第一个查询)
(第二次查询)
我们相信可以预期会发生这种情况,并且Oracle不能保证此类查询的行顺序。无论如何,我们知道我们可以更新应用程序以在唯一列上添加第二种排序,但这是一项巨大的开发工作。所以想知道也许我们可以在数据库端做些什么来避免进行大规模的应用程序更改。?
(第一个查询)
| ID | Data | ----------------- | 1 | James | | 2 | James | | 3 | James |
(第二次查询)
| ID | Data | ----------------- | 3 | James | | 1 | James | | 2 | James |
我们相信可以预期会发生这种情况,并且Oracle不能保证此类查询的行顺序。无论如何,我们知道我们可以更新应用程序以在唯一列上添加第二种排序,但这是一项巨大的开发工作。所以想知道也许我们可以在数据库端做些什么来避免进行大规模的应用程序更改。?
专家解答
正确,当对非唯一值进行排序时,数据库可以以任何顺序返回具有相同值的行。
唯一的方法guarantee你会得到你想要的顺序的行是添加一个唯一的列到排序。
唯一的方法guarantee你会得到你想要的顺序的行是添加一个唯一的列到排序。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




