【问题标题】:select query returning more rows than the parameter passed选择查询返回的行数多于传递的参数
【发布时间】:2013-09-24 23:45:28
【问题描述】:

之前我试过这个

string query =  "SELECT TOP " + TraineesPerBlock + 
               @"         * 
                   FROM TraineeDetail 
                  WHERE SUBBR = '0' 
                 ORDER BY MAXM DESC" ;

在 traineesPerBlock 中,当值通过 69 时,它给出了 110 条记录,我应该只给出 69 条。MAXM 是一个双字段,也有具有相同 MAXM 值的记录。 有什么解决办法吗?

【问题讨论】:

标签: c# select


【解决方案1】:

首先,我会尝试找出是因为开发环境或数据库的问题。 在 DBMS shell 中执行脚本,将 TraineesPerBlock 替换为数字 69,70。 在工作室中执行相同的操作。 此外,如果 TraineesPerBlock 为 int,请尝试将其强制转换为显式字符串。

【讨论】:

  • 这应该是一个评论。将 int 转换为 string 不会改变任何内容,因为这里的 + 运算符将在内部对 int 执行 ToString。
【解决方案2】:

你是否混淆了十六进制和十进制?

0x69(十六进制)非常接近 105(十进制),这是您得到的数字。

【讨论】:

    【解决方案3】:

    top 指令不返回前 n 项,因为其中一项很容易被引导 相信。相反,它返回至少 n 个不同的项目,由 结果的排序。 引用自: Access SQL using TOP 5 returning more than 5 results?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 2016-04-05
      • 2016-03-29
      • 1970-01-01
      • 2016-02-19
      • 2019-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多