【问题标题】:Max and Min Time query最大最小时间查询
【发布时间】:2010-12-26 08:02:17
【问题描述】:

如何在第一行显示最大时间,在第二行显示最小时间,以便使用 vb6 访问

【问题讨论】:

  • 为什么是两排?为什么不在一行中包含两个值?

标签: vba vb6 ms-jet-ace


【解决方案1】:

怎么样:

SELECT time_value
  FROM (SELECT MIN(time_column) AS time_value FROM SomeTable
        UNION
        SELECT MAX(time_column) AS time_value FROM SomeTable
       )
 ORDER BY time_value DESC;

除非 SomeTable 中没有行(或者您的 DBMS 不支持该表示法),否则应该可以完成这项工作。


简化 cmets 中的每个建议 - 谢谢!

SELECT MIN(time_column) AS time_value FROM SomeTable
UNION
SELECT MAX(time_column) AS time_value FROM SomeTable
ORDER BY time_value DESC;

如果您可以从一个查询中获取两个值,则可以使用以下方法提高查询的性能:

SELECT MIN(time_column) AS min_time,
       MAX(time_column) AS max_time
  FROM SomeTable;

一个非常好的优化器可能能够在一次遍历数据(或索引)时处理 UNION 版本的两半,但很容易想象优化器分别处理 UNION 的每一半并处理数据两次。如果 time 列上没有索引来加快速度,则可能涉及两次表扫描,这将比针对双值、单行查询的单个表扫描慢得多(如果表足够大重要的事情)。

【讨论】:

  • 为什么要麻烦外部查询? SELECT MAX ... UNION ... SELECT MIN ... 也应该做到这一点并按降序排列。
  • 当问题上的标签是“MDB”时,为什么有人假定 MS SQL Server?
  • 在这个问题的历史上没有任何意义表明 MDB 不在标签中。历史是: 原帖:mdb; marc_s编辑的标签:mdb vb6; onedaywhen retag:ms-access mdb vb6; Ben McCormack 重新标记:ms-access mdb vb6 vba。所以,你只是忽略了其中一个标签。
猜你喜欢
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 2023-04-08
相关资源
最近更新 更多