我想获得下表
的明显结果id | name | created_on
1 | xyz | 2015-07-04 09:45:14
1 | xyz | 2015-07-04 10:40:59
2 | abc | 2015-07-05 10:40:59
我希望明确的 id 与最新 created_on 表示结果
1 | xyz | 2015-07-04 10:40:59
2 | abc | 2015-07-05 10:40:59
如何通过sql查询获得上述结果?
答案 0 :(得分:3)
试试这个:
Select id, name, max(created_on) as created_on from table group by id
答案 1 :(得分:1)
尝试:
select id,max(name), max(created_on) from table_name group by id
附加说明:
如图所示,您的表格不是规范化。也就是说,您将name
与id
一起存储在此表中。所以你可以同时拥有这两行:
id | name | created_on
1 | a | 12-12-12
1 | b | 11-11-11
如果模型中逻辑上不存在该状态,则应通过将此表拆分为两个单独的表来重新设计数据库。一个用于保持id-name
关系,另一个用于保持id-created_on
关系:
table_1 (id,name)
table_2 (id,created_on)
现在,为每个id获取最后一个created_on:
select id,max(created_on) from table_2
如果您想在查询中保留name
:
select t1.id, t1.name, t2.created_on from table_1 as t1 inner join
(select id, max(created_on) as created_on from table_2) as t2
on t1.id=t2.id
答案 2 :(得分:0)
假设id / name总是一对:
select id, name, max(created_on)
from table
group by id, name;
在group by
中包含两者都更安全。我还发现,当列id
不是唯一的表时,我会发现它具有误导性。
答案 3 :(得分:0)
您可以使用关键字DISTINCT
喜欢
SELECT DISTINCT