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

MySQLで値を連続してグループ化し、そのようなグループにIDを追加します

    SELECT language,id,g
    FROM (
      SELECT language,id,
        CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
        @lastid := id As b
      FROM
        t, (SELECT @n:=0) r
      ORDER BY
        id
    ) s
    

    編集

    グループごとに4つだけが必要な場合は、行番号変数を追加します。

    SELECT language,id,g,rn
    FROM (
      SELECT language,id,
        CASE WHEN [email protected]+1 THEN @n ELSE @n:[email protected]+1 END AS g,
       @rn := IF(@lastid+1 = id, @rn + 1, 1) AS rn,
        @lastid := id As dt
      FROM
        t, (SELECT @n:=0) r
      ORDER BY
        id
    ) s
    Where rn <=4
    

    FIDDLE



    1. 例外:サポートされていない操作:RawSocketコンストラクター(sqljocky5を使用したDart:^ 2.2.1)

    2. 値がテーブルにすでに存在するかどうかを確認するにはどうすればよいですか?

    3. MySQLでの1対1の関係

    4. 主キーは合格ですか?