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

MySQLでMAXを使用する方法は?

    ORDER BYを組み合わせた行のすべてのデータを取得できます およびLIMIT 1 。あなたの場合、これを2回使用し、UNIONと組み合わせます :

      ( SELECT * 
        FROM person 
        WHERE gender = 'Male'
        ORDER BY age DESC
        LIMIT 1
      )
    UNION ALL
      ( SELECT * 
        FROM person 
        WHERE gender = 'Female'
        ORDER BY age DESC
        LIMIT 1
      )
    

    もう1つの方法は、男性と女性の最大年齢を(サブクエリを使用して)指定することです。

    SELECT *
    FROM person
    WHERE ( gender = 'Male'
          AND age =  
              ( SELECT MAX(age) 
                FROM person 
                WHERE gender = 'Male'
              )
          )
       OR ( gender = 'Female'
          AND age =  
              ( SELECT MAX(age) 
                FROM person 
                WHERE gender = 'Female'
              )
          )
    

    性別が2つ以上ある場合、またはMaleをハードコーディングしたくない場合 およびFemale クエリ内の定数。これは次のように書き直すことができます。

    SELECT p.*
    FROM person AS p
      JOIN
          ( SELECT gender
                 , MAX(age) AS maxage 
            FROM person 
            GROUP BY gender
          ) AS pg
        ON  pg.gender = p.gender
        AND pg.maxage = p.age
    

    上記のクエリには主な違いがあります。 1つ目は、男性1つと女性1つだけの結果を示します(多くても)。 2番目と3番目のクエリでは、最大年齢が同じで女性も同様である(男性)が多い場合に複数のクエリが表示されます。

    (gender, age)のインデックス どちらのクエリにも役立ちます。



    1. WhileループからPHP配列にデータを入力します

    2. 条件付きのMySql検索ランキング

    3. MySQL –データベース文字セットのエンコーディングと照合の説明

    4. SQLにアップグレードする時期はいつですか?