如何查询获取具有最新时间列值的特定行

时间:2015-08-25 05:13:39

标签: sqlite

以下是我的示例数据,我想获得具有最新时间的host:value对。

+------+-------+-------+
| HOST | VALUE | TIME  |
+------+-------+-------+
|  A   |  100  | 13:40 |
|  A   |  150  | 13:00 |
|  A   |  222  | 13:23 | 
|  B   |  210  | 13:55 |
|  B   |  300  | 13:44 |
+------+-------+-------+

想要获得每个主机列值的最新时间值的行。 结果应该是: A 150 13:40 B 210 13:55

我认为在Oracle中有几个分析功能可以实现这个要求,但我不知道我能在SQLite中做些什么。

您能告诉我如何进行查询吗?

1 个答案:

答案 0 :(得分:1)

以下是符合ANSI标准的执行查询的方法,该方法应在所有版本的SQLite上运行。对于可能更短的解决方案,请参阅@CL的答案。

SELECT t1.HOST || '-' || t1.VALUE || '-' || t1.TIME AS HOSTVALUETIME
FROM table t1 INNER JOIN
(
    SELECT HOST, MAX(TIME) AS MAXTIME
    FROM table
    GROUP BY HOST
) t2
ON t1.HOST = t2.HOST AND t1.TIME = t2.MAXTIME
ORDER BY t1.HOST DESC

<强>输出:

+---------------+
| HOSTVALUETIME |
+---------------+
|  A-100-13:50  |
|  B-210-13:55  |
+---------------+
相关问题