现在一个表,有这几个列:
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多行呢,所以不可能手动逐条做啦)先谢谢啦
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多行呢,所以不可能手动逐条做啦)先谢谢啦
into table1 from 表 group by id,nameselect * from table1
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)
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 行)
*/