sql >> データベース >  >> RDS >> Mysql

MySQLは複数から最終日付レコードを取得します

    できます GROUP BYを使用する 、しかしそれがどのように機能するかを理解することは重要です。

    GROUP BYを使用する場合 行のグループが1つに折りたたまれ、GROUP BYで使用されていない他の列に表示されるもの 句は、集計関数を使用して決定されるか、そのグループからのランダムな行です。 MAX()を保持して表示された行に対応する行を確実に取得することはできません。 値または使用した集計関数。これは、次のようなクエリを実行すると特に明白になります。

    SELECT id, MIN(whatever), MAX(whatever), another_column
    FROM your_table
    GROUP BY id
    

    「another_column」は、MIN()値またはMAX()値を保持している行に属している場合もあれば、まったく表示されていない別の行に属している場合もあります。 MySQL以外のRDBMSでは、集計関数を使用しない列、またはGROUP BYにリストされていない列を選択することは実際には禁止されています。 ユーザーが間違いを犯したり、正しい結果が得られたと思ったりするのを防ぐための条項。

    したがって、あなたの場合、「値」列も表示したいようです。上記の理由により、juergen_dの答えは間違っています。これは、「値」を選択しないためです。選択した場合、それが正しい「値」であるかどうかを確認することはできません。 Filipe Silvaの答えは間違っています。これは、「値」でグループ化されているためです。これを行うと、実際にはテーブル全体が返されます。 MAX()を2回使用しているため、Romeshの答えは間違っています。 関数は最大値を取得しますが、日時値に対応する値は取得しません。

    それで、あなたはそれをどのようにやらなければなりませんか? ここでは、3つの方法について説明します 。それらを自分で適用することによってそれらを学びます。それほど難しいことではありません:)



    1. (n-1)レベルのデータに基づいてnレベルの集計データを最適に計算する方法(Oracle)

    2. MySQLでDESCインデックスを作成するにはどうすればよいですか?

    3. Microsoft SQL Serverエラー926を修正する方法?-解決しました

    4. PHPを使用したSQLインジェクション攻撃