满足你的需求:
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
结果就不贴了哦。
update [TB_NAME] set key=321 where id in (3,4)
update [TB_NAME] set key=1 where id=7
哥们 这样的话谁都会啊
@比邻蓝枫: 你的问题是啥? 一句sql里边update这3个记录么?
嘿嘿...菠萝兄好逗...我是来看菠萝兄的
@指尖流淌: 我也纳闷为什么会有这种需求;@比邻蓝枫: 按照ID顺序排列,将所有KEY=0的KEY值修改为之后第一个不为零的KEY值。这个需求也不明确。既然按照ID顺序排列了,那ID IN (3,4)就应该更新成321,因为ID=5的key是321,ID=7的KEY就应该更新成1,对么?
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)。
不知道你要啥,一句Update修改三个值的话幻天芒大哥已经给出你答案了。
这问题有点难
你想要什么样子的,能说的明白点么,存储过程,函数,或者说SQL还是Linq,你总的有个要求吧,你这么说,怎么解决?
个人判断,这是一个不懂得如何进行抽象描述的用户。
正确的描述应该是
“按照ID顺序排列,将所有KEY=0的KEY值修改为之后第一个不为零的KEY值。”
多年的客户需求经验告诉我们,如果按照客户说的话直接做出软件来,
他们一定说:
“哥们,这样谁都会啊”。
我要的软件是一套ERP,里面顺便可以实现考勤统计、出差费用报销、公司内部员工内部短消息,最后,因为我们一个月要寄十多份快递单,最好能在系统里面集成一下快递公司查询接口,要方便实用,快递信息变更的时候,最好能够通过短信、邮件、IMessage、新浪微博、微信、WhatsApp或者目前市场上较见的聊天工具软件进行通知。当然,也要预留接口,让我们工作人员无须学会编程就可以接入今后十年出现的聊天应用APP。
抱歉,没描述清楚 ,确实是您所说的问题
挖掘需求功底很强啊!!!怒赞!
@比邻蓝枫: 根据你现在的需求,那么可以用子查询更新搞定的:
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
类似这样的语句。
@幻天芒: 其实我是混在程序员圈里面的业务员,哈哈。
@爱编程的大叔: 项目经理吧~~