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

グループごとに2行のMYSQLGroupby Column

    任意のIDが2つ必要な場合は、min()を使用してください およびmax()

    SELECT c.`cat_name` , min(id), max(id)
    FROM `info` i INNER JOIN
         `category` c
         ON i.`cat_id` = c.`cat_id`
    WHERE c.`cat_name` IS NOT NULL
    GROUP BY c`.`cat_name`
    ORDER BY c.`cat_name` ASC ;
    

    注:LEFT JOINを使用しています 次に、の列で集計します。 テーブル。一致しないものはすべてNULLに配置されるため、これは通常はお勧めできません。 グループ。さらに、WHERE 句はLEFT JOINを回します INNER JOINへ とにかく、私はそれを修正しました。 WHERE cat_nameであるかどうかに応じて、句が必要な場合と不要な場合があります。 NULLです 。

    最大または最小の2つが必要な場合、同じ列にそれらを含めることができます:

    SELECT c.`cat_name`,
           substring_index(group_concat id order by id), ',', 2) as ids_2 
    FROM `info` i INNER JOIN
         `category` c
         ON i.`cat_id` = c.`cat_id`
    WHERE c.`cat_name` IS NOT NULL
    GROUP BY c`.`cat_name`
    ORDER BY c.`cat_name` ASC ;
    


    1. SQL Serverデータベース(T-SQL)にファイルグループを追加する方法

    2. 同じテーブルで2回JOINを2回行う

    3. MySQLでログファイルを表示するにはどうすればよいですか?

    4. PostgreSQLでグループごとに最初の行を取得する方法