0

我正在处理一个超过 10 列的表。列名称之一是 ASAT,它的类型为 DATE(格式为yyyy-mm-dd HH:MM:SS:mmm)。

我正在寻找一个返回最大日期的所有记录的 sql 查询。尝试在 java 中使用该查询进行 JDBC 调用。

我试过这个: Select * from tablename where ASAT in (select MAX(ASAT) from tablename)

但它没有返回任何记录。

非常感谢任何帮助。谢谢

4

3 回答 3

0

怎么样:

SELECT MAX(Asat) FROM TableA;
SELECT MAX(Asat) FROM TableA GROUP BY Asat;
于 2016-11-02T14:59:27.273 回答
0

当您自加入时,我建议为表的每个副本设置别名。我个人之后使用带有数字的表格字母,以防我需要跟踪它以进行更大的查询。

Select * 
from tablename t1 
where t1.ASAT = (
    select MAX(t2.ASAT) 
    from tablename t2
)
于 2016-11-05T15:15:37.820 回答
0

如果我理解你的话,我相信你正在寻找这样的东西。首先构建一个包含主键和 MAX(ASAT) 的 CTE。然后加入它,选择主键与 MAX(ASAT) 行的主键匹配的位置。请注意,您的“ID”可能必须不止一列。

with tbl_max_asat(id, max_asat) as (
  select id, max(asat) max_asat
  from tablename
  group by id
)
select * 
from tablename t
  join tbl_max_asat tma
    on t.id = tma.id;

这篇旧帖子刚刚弹出,因为它是今天编辑的。也许我的回答仍然会对某人有所帮助。:-)

于 2020-01-30T17:50:04.183 回答