首页 新闻 会员 周边 捐助

一个简单的T-sql

0
悬赏园豆:30 [已解决问题] 解决于 2015-01-13 17:29

按照ID顺序排列,将所有KEY=0的KEY值修改为之后第一个不为零的KEY值

比邻蓝枫的主页 比邻蓝枫 | 初学一级 | 园豆:175
提问于:2015-01-08 21:22
< >
分享
最佳答案
0

满足你的需求:

 1 create table ta
 2 (ID int identity,
 3 Keys int)
 4 
 5 insert ta
 6 values(123),(123),(0),(0),(321),(321),(0),(1),(1)
 7 
 8 select * from ta 
 9 
10 declare 
11 @id int 
12 while exists(select 1 from ta where Keys=0 )
13 begin
14 select top 1 @id=max(ID) from ta where Keys=0 
15 update ta set Keys=(select Keys from ta where ID=@id+1)
16 where ID=@id
17 end
18 
19 
20 select * from ta 

结果就不贴了哦。

收获园豆:25
天堂的鸽子 | 初学一级 |园豆:138 | 2015-01-13 17:00
其他回答(6)
0

update [TB_NAME] set key=321 where id in (3,4)

update [TB_NAME] set key=1 where id=7

我是大菠萝 | 园豆:365 (菜鸟二级) | 2015-01-08 21:38

哥们 这样的话谁都会啊

支持(0) 反对(0) 比邻蓝枫 | 园豆:175 (初学一级) | 2015-01-08 21:43

@比邻蓝枫:  你的问题是啥? 一句sql里边update这3个记录么?

支持(0) 反对(0) mushishi | 园豆:430 (菜鸟二级) | 2015-01-08 23:18

嘿嘿...菠萝兄好逗...我是来看菠萝兄的

支持(0) 反对(0) 指尖流淌 | 园豆:340 (菜鸟二级) | 2015-01-10 19:56

@指尖流淌: 我也纳闷为什么会有这种需求;@比邻蓝枫: 按照ID顺序排列,将所有KEY=0的KEY值修改为之后第一个不为零的KEY值。这个需求也不明确。既然按照ID顺序排列了,那ID IN (3,4)就应该更新成321,因为ID=5的key是321,ID=7的KEY就应该更新成1,对么?

支持(0) 反对(0) 我是大菠萝 | 园豆:365 (菜鸟二级) | 2015-01-12 09:50
0

Update table set key = (case id  when 3 then 321 when 4 then 321 when 7 then 1 end)

where id in (3,4,7)。

幻天芒 | 园豆:37205 (高人七级) | 2015-01-09 09:24
0

不知道你要啥,一句Update修改三个值的话幻天芒大哥已经给出你答案了。

晓菜鸟 | 园豆:2594 (老鸟四级) | 2015-01-09 09:38
0

这问题有点难

lucika.zh | 园豆:62 (初学一级) | 2015-01-09 10:01
0

你想要什么样子的,能说的明白点么,存储过程,函数,或者说SQL还是Linq,你总的有个要求吧,你这么说,怎么解决?

_Vegetables | 园豆:586 (小虾三级) | 2015-01-09 10:19
0

个人判断,这是一个不懂得如何进行抽象描述的用户。

正确的描述应该是

“按照ID顺序排列,将所有KEY=0的KEY值修改为之后第一个不为零的KEY值。”

多年的客户需求经验告诉我们,如果按照客户说的话直接做出软件来,

他们一定说:

“哥们,这样谁都会啊”。

我要的软件是一套ERP,里面顺便可以实现考勤统计、出差费用报销、公司内部员工内部短消息,最后,因为我们一个月要寄十多份快递单,最好能在系统里面集成一下快递公司查询接口,要方便实用,快递信息变更的时候,最好能够通过短信、邮件、IMessage、新浪微博、微信、WhatsApp或者目前市场上较见的聊天工具软件进行通知。当然,也要预留接口,让我们工作人员无须学会编程就可以接入今后十年出现的聊天应用APP。

收获园豆:5
爱编程的大叔 | 园豆:30844 (高人七级) | 2015-01-09 10:21

抱歉,没描述清楚 ,确实是您所说的问题

支持(0) 反对(0) 比邻蓝枫 | 园豆:175 (初学一级) | 2015-01-09 10:28

挖掘需求功底很强啊!!!怒赞!

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-01-09 13:38

@比邻蓝枫: 根据你现在的需求,那么可以用子查询更新搞定的:

update table set Key = (select top 1 isnull(key,'last') from table t1 where t1.Id>table.Id and key<>0 order by t1.id desc)
where key=0

类似这样的语句。

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-01-09 13:43

@幻天芒: 其实我是混在程序员圈里面的业务员,哈哈。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2015-01-09 14:26

@爱编程的大叔: 项目经理吧~~

支持(0) 反对(0) 幻天芒 | 园豆:37205 (高人七级) | 2015-01-09 17:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册