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

SQL: Filter on one column, then select max timestamp for results

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

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

有没有办法 select 来自源的所有元素,然后获取最新的时间戳?

谢谢。

使用 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;

您可以在 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;