ホームページ >データベース >mysql チュートリアル >Mysql がデータをグループ化し、最新のデータを抽出する方法についての詳細な説明

Mysql がデータをグループ化し、最新のデータを抽出する方法についての詳細な説明

黄舟
黄舟オリジナル
2018-05-15 11:24:327599ブラウズ

質問と同様に、私もインターネット上で関連する解決策を探しましたが、その答えの多くは次の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。