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