【发布时间】:2010-12-26 08:02:17
【问题描述】:
如何在第一行显示最大时间,在第二行显示最小时间,以便使用 vb6 访问
【问题讨论】:
-
为什么是两排?为什么不在一行中包含两个值?
标签: vba vb6 ms-jet-ace
如何在第一行显示最大时间,在第二行显示最小时间,以便使用 vb6 访问
【问题讨论】:
标签: vba vb6 ms-jet-ace
怎么样:
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 ... 也应该做到这一点并按降序排列。