现在一个表,有这几个列:
ID NAME GENDER AGE City compus...(还有)
其中ID 和NAME 是起主键作用的列(但没有设置为主键)原来呢,应该是一个ID 和NAME 对应一条数据
但由于以前编程错误
导致一条数据被拆成了互斥的两行
比如
1 wang mail 20    null       null
1 wang null null  shanghai   sh-university现在有没有什么SQL语句(或是其他办法也行)
可以把这样的两条合并起来呢?
(数据库表中这样的2条有N多行呢,所以不可能手动逐条做啦)先谢谢啦

解决方案 »

  1.   

    select id,name,max(GENDER),max(AGE),max(City) from t group by id,name
      

  2.   

    select id,name,max(GENDER) as GENDER,max(AGE) as age,max(City) as city from t group by id,name
      

  3.   

    select ID ,NAME, max(GENDER)GENDER, max(AGE)AGE,max(City)City, ....
    into table1 from 表 group by id,nameselect * from table1
      

  4.   

    create table T(ID int, NAME varchar(20), GENDER varchar(20), AGE int,  City char(20), compus char(20))
    insert T select 1, 'wang', 'mail', 20,    null,       null
    union all select 1, 'wang', null, null,  'shanghai',   'sh-university'select ID,Name, GENDER=max(GENDER), AGE=max(AGE), City=max(City), compus=max(compus)
    from T 
    group by ID,Name--result
    ID          Name                 GENDER               AGE         City                 compus               
    ----------- -------------------- -------------------- ----------- -------------------- -------------------- 
    1           wang                 mail                 20          shanghai             sh-university       (1 row(s) affected)
      

  5.   


    create table T(ID int, NAME varchar(20), GENDER varchar(20), AGE int,  City char(20), compus char(20))
    insert T select 1, 'wang', 'mail', 20,    null,       null
    union all select 1, 'wang', null, null,  'shanghai',   'sh-university'
    union all select 2, 'li', null, 30,    'hk',       null
    union all select 2, 'li', 'add', null,  null,   'USA'select ID,Name, GENDER=max(GENDER), AGE=max(AGE), City=max(City), compus=max(compus)
    from T 
    group by ID,Name--result
    ID          Name                 GENDER               AGE         City                 compus               
    ----------- -------------------- -------------------- ----------- -------------------- -------------------- 
    2           li                   add                  30          hk                   USA                 
    1           wang                 mail                 20          shanghai             sh-university       (所影响的行数为 2 行)select ID,Name, GENDER=max(GENDER), AGE=max(AGE), City=max(City), compus=max(compus)
    into # from T 
    group by ID,Namedelete from T
    insert into T select * from #select * from T
    /*
    ID          NAME                 GENDER               AGE         City                 compus               
    ----------- -------------------- -------------------- ----------- -------------------- -------------------- 
    2           li                   add                  30          hk                   USA                 
    1           wang                 mail                 20          shanghai             sh-university       (所影响的行数为 2 行)
    */