2

如何使用 vb6 显示第一行的最大时间和第二行的最小时间

4

1 回答 1

5

关于什么:

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 不支持该表示法),否则这应该可以完成工作。


简化评论中的每个建议 - 谢谢!

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 列上没有索引来加快速度,则可能涉及两次表扫描,这将比针对双值、单行查询的单个表扫描慢得多(如果表足够大重要的事情)。

于 2009-12-14T06:35:13.070 回答