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

SQLでほぼ同じアイテムを組み合わせる方法は?

    試してみる場合:

    SET @name:='',@num:=0;
    
    SELECT id,
           @num:= if(@name = user, @num, @num + 1) as number,
           @name := user as user
    FROM foo
    ORDER BY id ASC;
    

    これにより:

    +------+--------+------+
    | id   | number | user |
    +------+--------+------+
    |    1 |      1 | a    |
    |    2 |      1 | a    |
    |    3 |      1 | a    |
    |    4 |      2 | b    |
    |    5 |      2 | b    |
    |    6 |      2 | b    |
    |    7 |      3 | a    |
    |    8 |      3 | a    |
    +------+--------+------+
    

    だから、あなたは試すことができます:

    SET @name:='',@num:=0;
    
    SELECT COUNT(*) as count, user
    FROM (
    SELECT @num:= if(@name = user, @num, @num + 1) as number,
           @name := user as user
    FROM foo
    ORDER BY id ASC
    ) x
    GROUP BY number;
    

    +-------+------+
    | count | user |
    +-------+------+
    |     3 | a    |
    |     3 | b    |
    |     2 | a    |
    +-------+------+
    

    (テーブルをfooと呼びました また、aという名前を使用しました およびb zhangsanを書くのが面倒だったからです およびlisi 何度も)



    1. PostgreSQL text[][]タイプとJavaタイプのマッピング

    2. SQLServerからMySQLへのデータ転送

    3. リレーショナルモデル

    4. Oracleはいつnull列値を索引付けしますか?