找个max工号,把相同的选出来,然后max工号+rowid,保存。
解决方案 »
- 怎么办 用SQL语句
- 求助
- 表中的列和现有的主键和unique约束不匹配
- 一個SQL語句的寫法,希望高手來發表一下,謝謝
- 这句sql哪里有错?
- 用什么方法得到某张表里是否存在记录,在线等。
- 为什么我在控制台的master数据库中就看不到syslogins系统表呢?
- 帮我看看合不合适,科不科学,多提意见,多给你分,谢谢
- 请教如何删除一个表中的第一行?
- 我要访问别人的数据库(可能是一部分),我该向他要那些信息?
- 如何用移动加权平均法计算成本及结存数量,分仓,高效的
- 用SQL SERVER 2008导入EXCEL数据,共五万多行,怎样才能看到全部数据?用SQL SERVER 2008怎样导入VF数据(FOXPRO)?
create table tb (序号 int ,工号 char(10),姓名 varchar(7))
insert into tb
select'1','1000211234','王建'union all
select'2','1000215678','李健'union all
select'3','1000214231','王林'union all
select'4','1000211234','王荣'union all
select'5','1000211234','张是'union all
select'6','1000215678','唐娟'union all
select'7','1001214423','张军'union all
select'8','1001214423','王建'
go
select * from tb
gowith cte as
(
select *,ROW_NUMBER() over (partition by 工号 order by 序号) as rn from tb
)
update cte set 工号= Cast(工号 as numeric(16,0))+ cast (rn as int)-1select * from tb--序号 工号 姓名
--1 1000211234 王建
--2 1000215678 李健
--3 1000214231 王林
--4 1000211235 王荣
--5 1000211236 张是
--6 1000215679 唐娟
--7 1001214423 张军
--8 1001214424 王建
SELECT * FROM XXX WHERE 工号 IN (
SELECT 工号 FROM XXX GROUP BY 工号 HAVING COUNT(工号)>1)
把那些UID的工号UPDATE就可以了