Mysql 如何在sql中获取最新的不同行?
我有一个简单的数据库表,如下所示: 在这里,我需要提取featureId、name和最新的createdTime(即max)Mysql 如何在sql中获取最新的不同行?,mysql,sql,Mysql,Sql,我有一个简单的数据库表,如下所示: 在这里,我需要提取featureId、name和最新的createdTime(即max) 我试过这样的方法: select distinct featureId, name, max(createdTime) as createdTime from feature group by featureId; 但它返回了错误的结果: 我需要一个包含名称的最大createdTime结果
我试过这样的方法:
select distinct featureId,
name,
max(createdTime) as createdTime
from feature
group by featureId;
但它返回了错误的结果:
我需要一个包含名称的最大createdTime结果
1234 Test3 3
1235 Test5 5
1236 Test7 7
我错过了什么吗?我试过以下方法:
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
看来你的谷歌搜索结果不好。让我们再来一次
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
从您的查询中删除分组依据或分组依据,您应该在Mysql Select查询中只使用一个,即Distinct或GROUP By。请在评论中提及为什么要进行向下投票?不要在同一个Select中使用Distinct和GROUP By,不要使用它。。。第二件事是为了解决您的问题,请在上面查找行\ u count()(按“列”划分,按“列”排序作为你的内部选择,你会在之后找到答案,第三次也是最后一次,否决投票的原因可能是同一个问题被问了数千次,通过谷歌搜索你会找到答案it@Veljko89谢谢你的迅速帮助。在你的帮助下,我已经取得了成功ted结果:)不,在这种情况下,你可能会得到正确的结果,但是如果1234得到的最大创建时间是3,而1235得到的最大创建时间是3,4,5,它的最大值是5。你像这样使用会得到1235 4作为输出