> 데이터 베이스 > MySQL 튜토리얼 > MySQL은 그룹화 후 최신 레코드를 얻습니다.

MySQL은 그룹화 후 최신 레코드를 얻습니다.

大家讲道理
풀어 주다: 2017-05-28 11:18:40
원래의
2310명이 탐색했습니다.

질문과 비슷하게 저도 인터넷에서 관련 솔루션을 찾아봤습니다. 대부분의 답변은 다음 SQL 문과 같습니다.
select Id,AccountId,Mark,max(CreateTime) as 최신 from AccountMark. AccountId를 기준으로 b 그룹으로

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를 생성해야 하는데 Mysql의 뷰에서는 query절을 사용할 수 없습니다. 어떤 절도 나타나지 않고 올바른 데이터를 감지할 수 있는 SQL 문을 제공할 수 있는 사람이 있습니까? 감사해요!

Solution:

AccountMark에서 *가 존재하지 않는 경우 b로 선택합니다(AccountMark에서 AccountId= b.AccountId

및 b.CreateTime

위 내용은 MySQL은 그룹화 후 최신 레코드를 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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