【问题标题】:Records issue using top keyword in sql query在 sql 查询中使用 top 关键字记录问题
【发布时间】:2012-01-06 20:37:10
【问题描述】:

我有一个运行良好的 Linq 查询,但我注意到当我在该查询中使用 take 关键字时,它不会返回相同的顶部选定记录。 当我看到 Sql profiler 查询时,它们完全一样,除了 top 关键字可能是什么问题。我注意到的另一件事是,当我在数据库中给出不大于记录时,它也适用于 take。

我附上查询和记录附件

当我在此查询中应用前 10 名时,它会显示此记录

我使用 Sql Server 2008 R2 可能是什么问题。

【问题讨论】:

  • 使用不带ORDER BYTOP 不会产生可预测的结果...如果您想使用TOP 10 - 您必须定义应采用的排序标准成为!否则:TOP 10 是什么.....

标签: sql sql-server linq sql-server-2008-r2


【解决方案1】:

使用不排序的TOP 关键字并不能保证结果集的可重复性。

来自here

如果包含 TOP 的 SELECT 语句也有 ORDER BY 子句, 要返回的行是从有序结果集中选择的。这 整个结果集按指定顺序构建,前 n 行 返回排序后的结果集。

【讨论】:

    【解决方案2】:

    尝试使用ORDER BY(或linq 中的orderby)强制查询对记录进行排序。

    【讨论】:

      【解决方案3】:

      默认排序可能不同,请尝试按列显式排序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-05
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-29
        相关资源
        最近更新 更多