我有一张如下表格。
+---------+-----------+
| key | ts |
+---------+-----------+
| key1 | 1200000000|
+---------+-----------+
| key1 | 1300000000|
+---------+-----------+
| key2 | 1200000000|
+---------+-----------+
我想选择*,这样我就可以获得所有不同的'密钥'。对于具有相同键的行,那么我想要具有最高ts的行。所以在这个例子中,我想返回:
+---------+-----------+
| key1 | 1300000000|
+---------+-----------+
| key2 | 1200000000|
+---------+-----------+
我认为它是MAX和GROUP BY键的组合,但无法弄明白。
由于
答案 0 :(得分:0)
就像你自己说的那样,仅仅是key
列的分组问题,ts
列的最大值
select key, max(ts) from yourTable group by key
答案 1 :(得分:0)
这是一个简单的解决方案:
SELECT
*
FROM
tbl t
WHERE
NOT EXISTS(SELECT * FROM tbl WHERE ts < t.ts AND key = t.key)
替代方法是按键分组并获取子选择中每个键的最大值(ts),然后使用键和ts上的原始表进行内连接以获取其余列。