如何在sql中获取最新的不同行?

时间:2016-01-19 07:15:11

标签: mysql sql

我有一个简单的数据库表如下:

enter image description here

在这里我需要提取featureId,name和最新的createdTime(即max)

我尝试过类似的事情:

    select distinct featureId, 
           name, 
           max(createdTime) as createdTime 
      from feature 
  group by featureId;

但它返回了错误的结果:

enter image description here

我需要包含max createdTime的名称的结果。

1234    Test3    3
1235    Test5    5
1236    Test7    7

我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

似乎你的谷歌搜索结果并不好。让我们再做一次。

     select 
          a.featureId,
          a.name,
          a.createTime
     from feature a
     where exists(
     select 1 from 
          (select featureId,max(createTime)as createTime from feature group by featureId)b
              where b.featureId = a.featureID and b.createTime = a.createTime  
     )

或者您可以使用内连接

     select 
          a.featureId,
          a.name,
          a.createTime
     from feature a
     inner join 
     (select featureId,max(createTime)as createTime from feature group by featureId)b
     on a.featureId = b.featureId and a.createTime = b.createTime

答案 1 :(得分:0)

我尝试过类似的事情:

SELECT 
      featureId, name, createdTime
FROM  feature 
where createdTime
IN    (SELECT max(createdTime) from feature group by featureId) ;

并达到了我预期的结果。

1234    Test3    3
1235    Test5    5
1236    Test7    7

答案 2 :(得分:0)

从查询中删除GROUP By或Distinct,您应该只在Mysql Select查询中使用一个,不同或分组。