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

MySQLのMAX()とGREATEST():違いは何ですか?

    一見すると、MySQL MAX() およびGREATEST() 関数は同様の操作を実行します。どちらも、値の範囲から最大値を返します。ただし、これら2つの機能には違いがあります。

    これら2つの関数の違いを確認する最良の方法は、それらの構文を比較することです。

    構文

    各関数の構文は次のようになります:

    MAX([DISTINCT] expr) [over_clause]
    GREATEST(value1,value2,...)
    

    すでに、それらは完全に異なって見えます。 MAX() 関数はDISTINCTを受け入れます キーワードとOVER 句(およびGREATEST() 機能はありません)。

    ただし、これら2つの関数の主な違いは、受け入れられる引数にあります。具体的には:

    • MAX() 1つの引数を受け入れます
    • GREATEST() 複数の引数を受け入れます

    したがって、MAX() 通常、データベースの列の最大値を返すために使用されます。テーブルには多くの行を含めることができますが、この関数は最大値の行を返します。

    GREATEST() 一方、渡された引数のリストから最大値の引数を返します。したがって、たとえば、この関数に3つの引数を渡すと、最大値の引数が返されます。

    例1-MAX()関数

    MAX()を示す例を次に示します。 機能。

    SELECT MAX(Population) AS 'Result'
    FROM City;
    

    結果:

    +----------+
    | Result   |
    +----------+
    | 10500000 |
    +----------+
    

    この例では、Cityから人口が最も多い都市を検索します。 テーブル。各都市の人口を含む列は、Populationと呼ばれます。 。

    この例の重要な点は、関数に引数が1つだけ指定されたが、複数の行が照会されたことです。

    MAX()に複数の引数を渡そうとした場合 関数を使用するとエラーが発生します。

    例2– GREATEST()関数

    GREATEST()を示す例を次に示します。 機能。

    SELECT GREATEST(1, 5, 9) AS 'Result';
    

    結果:

    +--------+
    | Result |
    +--------+
    |      9 |
    +--------+
    

    したがって、この場合、3つの引数を提供します。各引数は他の引数と比較されます。これは、MAX()に提供される単一の引数とは対照的です。 機能。

    GREATEST()に単一の引数を渡そうとした場合 関数を使用するとエラーが発生します。


    1. パフォーマンスの問題:最初の遭遇

    2. ダイレクトNFSでのORA-4031エラー

    3. docker-composeupの後にPostgresダンプをロードします

    4. Oracleでテーブル構造を変更するにはどうすればよいですか?