如何在sql中获得明显的结果?

时间:2015-07-04 12:34:21

标签: mysql sql

我想获得下表

的明显结果
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查询获得上述结果?

4 个答案:

答案 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

附加说明:

如图所示,您的表格不是规范化。也就是说,您将nameid一起存储在此表中。所以你可以同时拥有这两行:

 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