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

MAX(updated_date)を選択すると、他の列の値が間違ってしまう

    GROUPBY句またはより複雑なクエリが必要です。

    SELECT field1, MAX(updated_date)
      FROM mytable
     GROUP BY field1
    

    サンプルデータの場合、これは3行を返します。

    より可能性が高いのは、次のことです。

    SELECT t1.field1, t3.max_date
      FROM mytable AS t1
      JOIN (SELECT MAX(t2.updated_date) AS max_date
              FROM mytable AS t2
           ) AS t3
        ON t1.updated_date = t3.max_date;
    

    サンプルデータの場合、これは1行を返します:

    ta3   2012-03-11 11:05:56
    

    主要なDBMSのうち、選択リストに集計列と非集計列が混在している場合、MySQLのみがGROUPBY句を省略できます。 SQL標準ではGROUPBY句が必要であり、その中にすべての非集計列をリストする必要があります。 MySQLでは、GROUP BY句を省略すると、必要な答えが得られる場合があります。しかし、多くの場合、予期しない答えを出すことができます。



    1. MariaDBでのBIT_LENGTH()のしくみ

    2. mysqlとphpで異なるユーザーの合計値を取得します

    3. postgresqlはregexpの背後にあるルックビハインドをサポートしていますか?

    4. php配列を使用したMysqlSELECTステートメント