代码之家  ›  专栏  ›  技术社区  ›  Ken

在MySQL中合并count行

  •  0
  • Ken  · 技术社区  · 16 年前

    我在MySQL中有一个表,大致如下所示:

    value | count
    -------------
    Fred  | 7
    FRED  | 1
    Roger | 3
    roger | 1
    

    value | count
    -------------
    Fred  | 8
    Roger | 4
    

    也就是说,由MySQL管理,具有 value 主键。保留哪一个(弗雷德或弗雷德)并不重要。

    我知道如何在代码中这样做。我还知道如何生成问题值列表(使用自连接)。但是我想用SQL更新/删除来迁移我的表,我想不出什么。

    如果我知道没有一对记录有一个值的变体,具有相同的计数(如(“Fred”,4)和(“Fred”,4)),那么我想我可以通过自连接来复制计数,然后通过更新来删除零。但我没有这样的保证。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Bill Karwin    16 年前

    奇怪的是,MySQL似乎是为你这么做的。我刚刚在MySQL5.1.47中进行了测试:

    create table c (value varchar(10), count int);
    insert into c values ('Fred',7), ('FRED',1), ('Roger',3), ('roger',1);
    
    select * from c;
    
    +-------+-------+
    | value | count |
    +-------+-------+
    | Fred  |     7 |
    | FRED  |     1 |
    | Roger |     3 |
    | roger |     1 |
    +-------+-------+
    
    select value, sum(count) from c group by value;
    
    +-------+------------+
    | value | sum(count) |
    +-------+------------+
    | Fred  |          8 |
    | Roger |          4 |
    +-------+------------+
    

        2
  •  2
  •   JYelton Melchior Blausand    16 年前

    SELECT UPPER(value) AS name, SUM(count) AS qty FROM table GROUP BY name;
    

    INSERT INTO newtable (SELECT UPPER(value) AS name, SUM(count) AS qty FROM table GROUP BY name);