SQL:过滤一列,然后选择结果的最大时间戳

时间:2017-04-24 11:12:47

标签: sql greatest-n-per-group hana

String stmt1 = "SELECT * FROM mytable WHERE created=(SELECT MAX(created)";
String stmt2 = "SELECT * FROM mytable WHERE source=somesource";

我想结合这两个陈述。我有三个来源,我想为每个来源创建最后一个实例(使用三个单独的查询)。

有没有办法从源中选择所有元素,然后获取最新的时间戳?

谢谢。

2 个答案:

答案 0 :(得分:0)

使用ANSI SQL执行此操作的标准方法是row_number()(几乎所有数据库都支持,包括Hana):

SELECT t.*
FROM (SELECT t.*,
             ROW_NUMBER() OVER (PARTITION BY source ORDER BY created DESC) as seqnum
      FROM mytable t
     ) t
WHERE seqnum = 1;

答案 1 :(得分:0)

您可以在mysql中使用GROUP BY将某些列与WHERE条件分组,例如:

SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)

在你的情况下:

SELECT MAX(created)as date,* FROM mytable WHERE source=somesource GROUP   BY created;