如何用sql语句 update解决以下问题?

来源:百度知道 编辑:UC知道 时间:2024/06/08 18:24:33
ID1 ID2 NAME TypeID result
001 111 张三 150 22222
100 123 李四 161 11111
112 191 张三 160 33333
211 135 张三 164 44444
想实现name相同时,ID2的值改成相同并且取 TypeID最小的那个行的ID2.
如下:
ID1 ID2 NAME TypeID result
001 111 张三 150 22222
112 111 张三 160 33333
211 111 张三 164 44444
100 123 李四 161 11111

tablename 是你的表名

update tablename set name=(select name from tablename as t1 INNER JOIN
tablename AS t2 ON t1.name = t2.name GROUP BY name HAVING (COUNT(*) > 1)),id2=(select minID from tablename as t1 INNER JOIN tablename AS t2 ON t1.name = t2.name GROUP BY name HAVING (COUNT(*) > 1)) where name=select name from tablename as t1 INNER JOIN tablename AS t2 ON t1.name = t2.name GROUP BY name HAVING (COUNT(*) > 1))

你自己调试看看吧,有问题找我

思考中!

Update A
set A.ID2=B.ID2 from
(select Min(ID2) as ID2,name from A group by name) B
where A.name=B.name

A改为你的表名。。。

update 表名 a set a.id2=(select b.typeid from (select name,min(typeid) typeid from 表名 group by name) b
where a.name=b.name)