MySQL이 데이터를 그룹화하고 최신 데이터를 추출하는 방법에 대한 자세한 설명

黄舟
풀어 주다: 2019-02-22 16:29:20
원래의
7566명이 탐색했습니다.

저도 질문처럼 인터넷에서 관련 솔루션을 찾아봤습니다. 대부분의 답변은 다음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿