admin

对于选择返回多个值的SQL,在Id为GUID时如何排序?

sql

我想知道SQL Server如何订购从查询返回的数据,而各个表的Id列都属于uniqueidentifier类型。

创建所有GUID时,我正在使用NHibernate GuidComb并执行以下操作:

Sheet sheet = sheetRepository.Get(_SheetGuid_); // has many lines items
IList<SheetLineItem> lineItems = sheet.LineItems;

我只是想弄清楚在执行以下操作时如何订购它们:

foreach (SheetLineItem lineItem in lineItems)

如果发生这种情况 ,我看不到有一篇关于在订购SQL时通过SQL比较GUID的方式的好文章。


阅读 151

收藏
2021-06-07

共1个答案

admin

除非您包含ORDER BY子句,否则SQL
Server不会保证结果的任何顺序。有时可能会以某种顺序一致地返回(例如聚簇索引顺序),但是您不能确定情况总是如此(例如,如果查询被拆分并在多个线程上执行,则当结果合并时,每次执行的顺序可能会有所不同,因为线程可能会以不同的顺序完成)。

获得特定订单的唯一方法是使用ORDER BY子句。在NHibernate中,这可以通过在映射文件中指定包(或等效项)上的order-by =“
…”来实现。

有关“ order-
by”的更多信息,请参见NHibernate文档:http :
//nhibernate.info/doc/nh/en/index.html

2021-06-07