저도 질문처럼 인터넷에서 관련 솔루션을 찾아봤습니다. 대부분의 답변은 다음 SQL 문과 같습니다.
select Id,Ac count Id,Mark,max(Create Time ) as Latest from AccountMark as b group by AccountId
관련 mysql 튜토리얼 추천: "mysql tutorial"
Max 사용 기능. 그런데 제가 찾아낸 데이터에 뭔가 문제가 있는 것 같습니다. 사진에서 보듯이 하이라이트된 데이터에는 Mark 필드와 CreateTime 필드가 전혀 일치하지 않습니다!
무슨 일이에요? Max 기능을 사용한 후 그룹화하는 것이 안정적인가요? 또 다른 진술이 있습니다:
select *,COUNT(AccountId) as Num from (select * from AccountMark order by CreateTime desc) `temp` group by AccountId order by CreateTime desc이 방법으로 찾은 데이터는 정확합니다
그러나
view를 만들어야 하는데 query 절은 Mysql의 뷰에서 허용되지 않습니다. 어떤 절도 나타나지 않고 올바른 데이터를 감지할 수 있는 SQL 문을 제공할 수 있는 사람이 있습니까? 감사해요!
해결책:
select * from AccountMark as b where not exists(select 1 from AccountMark where AccountId= b.AccountId and b.CreateTime<CreateTime )
위 내용은 MySQL이 데이터를 그룹화하고 최신 데이터를 추출하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!