Mysql 如何在sql中获得不同的结果?

Mysql 如何在sql中获得不同的结果?,mysql,sql,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 我希望在下面的结果中使用最新创建的\u来区分id 1 | xyz | 2015-07-04 10:40:59 2 | abc | 2015-07-05 10:40:59 如何通过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
我希望在下面的结果中使用最新创建的\u来区分id

1   | xyz    | 2015-07-04 10:40:59
2   | abc    | 2015-07-05 10:40:59
如何通过sql查询获得上述结果?

请尝试以下操作:

Select id, name, max(created_on) as created_on from table group by id
尝试:

补充说明:

看起来,您的表没有规范化。也就是说,您将名称与id一起存储在此表中。因此,您可以同时拥有这两行:

 id  |  name  | created_on   
  1  |    a   |  12-12-12 
  1  |    b   |  11-11-11
如果该状态在您的模型中在逻辑上不可能出现,您应该通过将该表拆分为两个单独的表来重新设计数据库;一个用于保存id名称关系,另一个用于保存id创建的关系:

table_1 (id,name)
table_2 (id,created_on)
现在,要获取每个id的上次创建的\u,请执行以下操作:

 select id,max(created_on) from table_2
如果要在查询中保留名称:

 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

假设id/name始终是一对:

select id, name, max(created_on)
from table
group by id, name;
更安全的做法是将两者都包括在分组中。我还发现,如果列id对于表不是唯一的,那么命名它会产生误导。

您可以使用关键字DISTINCT 像


欢迎您:如果答案有用,请务必接受:
select id, name, max(created_on)
from table
group by id, name;
SELECT DISTINCT