【问题标题】:Get max result from SQL with VB.net使用 VB.net 从 SQL 获取最大结果
【发布时间】:2014-12-13 07:20:58
【问题描述】:

我有以下代码:

query = "SELECT ResultDate, Result FROM ASPECTRESULTS WHERE EUPN = '" & StudentEUPN & "' AND SubjectCode = '" & SearchClass & "' AND ACCYEAR = '" & AccademicYear & "' ORDER BY RESULTDATE"

我想根据结果的日期获得最新的结果。 我尝试使用 SELECT MAX(ResultDate) 但没有运气。

任何帮助表示赞赏。

问候 格雷厄姆

【问题讨论】:

  • ResultDate 是您数据库中的 DateTime 字段吗?

标签: sql-server vb.net


【解决方案1】:

您可以编写(假设 ResultDate 是表中的日期类型列)

query = "SELECT TOP 1 ResultDate FROM ASPECTRESULTS WHERE ..... " & _
        "ORDER BY RESULTDATE DESC"

这将返回 ResultDate 列中的最高日期

也就是说,您应该真正研究parameterized query 的工作原理以及为什么应该使用ALWAYS use parameters 而不是字符串连接

编辑
从您上面的评论(ResultDate 是一个 Char(10))来看,正确排序这个字段真的很痛苦,特别是如果您将日期存储为 dd/MM/yyyy。使用这种格式的字符排序,值'11/01/2013' 跟在值'01/01/2014' 之后。这是始终在日期时间字段中存储日期时间值的众多原因之一。数据库将知道如何正确处理日期,而无需考虑字符串是如何表示的。

您有两种选择可以克服这个障碍。

  • 将字段 ResultDate 的数据类型更改为 DateTime 字段(推荐)
  • 使用“可排序”字符格式(yyyy/MM/dd 与 月和日总是两位数(不推荐)

【讨论】:

  • 我还可以通过使用“SELECT TOP 1 ResultDate, Result...”获得结果吗?还是会获得前 1 个结果?
  • 关键点是ORDER BY ResultDate DESC。这将对日期最高的记录进行排序,并仅获取第一条记录。您可以在 ResultDate 之前或之后添加所需的所有字段。只需将结果集按 ResultDate 降序排序
  • 我会改变结构,看看我会怎么做,谢谢。
猜你喜欢
  • 2023-03-06
  • 2016-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多