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