質問と同様に、私もインターネット上で関連する解決策を探しましたが、その答えの多くは次の SQL ステートメントのようなものです:
select Id,Ac count Id,Mark,max(Create Time ) as Latest from AccountMark as b group by AccountId
関連する mysql ビデオ チュートリアルをお勧めします: "mysql チュートリアル"
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 ステートメントを誰かが提供してもらえますか?ありがとう!
解決策:
select * from AccountMark as b where not exists(select 1 from AccountMark where AccountId= b.AccountId and b.CreateTime<CreateTime )
以上がMysql がデータをグループ化し、最新のデータを抽出する方法についての詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。