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

where句mysqlのMAX関数

    集計関数の結果を参照することはできません(たとえば、MAX()WHERE 同じSELECTの句 。

    このタイプの問題を解決するための規範的なパターンは、次のようなインラインビューを使用することです。

    SELECT t.firstName
         , t.Lastname
         , t.id
      FROM mytable t
      JOIN ( SELECT MAX(mx.id) AS max_id
               FROM mytable mx
           ) m
        ON m.max_id = t.id
    

    これは、指定された結果を取得するための1つの方法にすぎません。同じ結果を得るには他にもいくつかのアプローチがあり、それらのいくつかは他のアプローチよりもはるかに効率が悪い可能性があります。他の回答はこのアプローチを示しています:

     WHERE t.id = (SELECT MAX(id) FROM ... )
    

    場合によっては、最も簡単なアプローチは、LIMITを指定したORDERBYを使用することです。 (この構文はMySQLに固有であることに注意してください)

    SELECT t.firstName
         , t.Lastname
         , t.id
      FROM mytable t
     ORDER BY t.id DESC
     LIMIT 1
    

    これは1行のみを返すことに注意してください。したがって、同じid値を持つ行が複数ある場合、すべての行が返されるわけではありません。 (最初のクエリは、同じid値を持つすべての行を返します。)

    このアプローチを拡張して複数の行を取得できます。LIMIT 5に変更することで、id値が最も高い5つの行を取得できます。 。

    このアプローチのパフォーマンスは、利用可能な適切なインデックス(つまり、idを使用)に特に依存することに注意してください。 PRIMARY KEYとして、または別のインデックスの先頭の列として。)適切なインデックスは、これらすべてのアプローチを使用したクエリのパフォーマンスを向上させます。



    1. グループ数のパーセンテージの計算(*)

    2. 長いPHPスクリプトを実行しているときにメモリをクリアするにはどうすればよいですか? unset()を試しました

    3. plpgsql変数を使用してn_distinctを設定するときにエラーが発生しました

    4. SQLite Where