SQL简单问题, 50分送上 .

mc_dv 2014-10-31 10:15:33
数据库ID有重复的, 想根据某个列的大小来把其中一个加50000. 怎么写 .
...全文
156 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-10-31
  • 打赏
  • 举报
回复
更正:适前提
Tiger_Zhao 2014-10-31
  • 打赏
  • 举报
回复
-- 适应前提:一个ID最多只有2条,并且[某个列]必须不等。
UPDATE table1
SET ID = ID + 50000
WHERE EXISTS (SELECT *
FROM table1 t
WHERE t.ID = table1.ID
AND t.某个列 < table1.某个列
)
mc_dv 2014-10-31
  • 打赏
  • 举报
回复
引用 2 楼 u010192842 的回复:
数据是否相同,要是相同就得用rownumber先做出顺序;要是不是的可以利用不同数据的列(max,min)来关联要更新的数据。
不会写啊 .sql 很渣 .
Yole 2014-10-31
  • 打赏
  • 举报
回复
数据是否相同,要是相同就得用rownumber先做出顺序;要是不是的可以利用不同数据的列(max,min)来关联要更新的数据。
还在加载中灬 2014-10-31
  • 打赏
  • 举报
回复
如果没有其它区别这些数据的字段的话 建议倒表,先放到临时表,然后删掉这么,然后再倒回来
navyhuang 2014-10-31
  • 打赏
  • 举报
回复


CREATE TABLE TEST1
( id int,
  number int
)
go

insert into TEST1(id,number) 
select 1,1
union
select 1,2
union
select 2,3
union 
select 2,4

select id,number,ROW_NUMBER() OVER(PARTITION BY id order by number) as RN
INTO #temp
FROM TEST1

UPDATE a 
SET a.id=a.id+5000
FROM TEST1 a join #temp b
ON a.id=b.id and a.number=b.number
WHERE b.RN<>1

DROP TABLE #temp
SELECT * FROM TEST1

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧