TABLE A  
id  name  count  year  color
1  hmily  1      2001  bule
2  hmily  2      2001  bule
3  jack   1      2011  black
4  rose   3      2002  bule
5  rose   4      2002  bule
6  rose   3      2003  bule要求 将 name year color 相同的记录合并,保留count的sum值即可,然后删除重复数据。
即最后应该是
1  hmily 3  2011 bule
3  jack  1  2011 bule
4  rose  7  2002 bule
6  rose  3  2003 bule
可以是多条语句 如何sql 谢谢

解决方案 »

  1.   


    --創建臨時保存記錄的表
    create table A_copy as 
    select min(id) id,name,sum("count"),year,color 
    from A
    group by name,year,color;
    --清除表A
    truncate table A;
    --新增記錄
    insert into A select * from A_copy;
    --刪除表
    drop table A_copy;
      

  2.   

    [
    select min(id) id,name,sum("count") "count",year,color --少個列名
      

  3.   

    因为如果用create table 如果这个表的字段发生变化了 我还是要修改sql才可以。比如多加一列 那么临时表的sql也要重写
      

  4.   

    我想的也是这~  但是sql以后维护起来不方便。 因为这个表这三个字段是肯定不会变的。  
      

  5.   


    select min(id) id,name,sum(count) count,year,color 
    group by name,year,color;
      

  6.   

    都是一样的。 如果表单发生变化,sql也要改的
      

  7.   

    你是大侠,表都变化了 还不想改SQL,我勒个去的,地基都变了,楼能没有变化么。。
      

  8.   

    先用分组 查出 year color name 相同的  count的值  然后更新 然后删除重复数据
    这样只要year color name 不变 表加其他的字段 都可以不变sql
      

  9.   


    --update
    update A set count=(select count from (select min(id) id,name,sum(count) count,year,color 
        from A
        group by name,year,color) t1
    where A.name=t1.name and A.year=t1.year and A.color=t1.color and A.id=t1.id);
    --delete
    delete A where id>(select min(id) from A t1 where A.name=t1.name and A.year=t1.year and A.color=t1.color);