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