永发信息网

sql 批量update in

答案:3  悬赏:0  手机版
解决时间 2021-04-05 17:30
有一个表为A
里面有I_ID,UpdateTime,I_Valid
I_Valid为到期时间
到期时间为30天,更新后UpdateTime为now()
I_Valid为原来到期时间比如为30天以NOW()基础上再次30天

图1
I_ID I_Valid UpdateTime
1 2009-11-21 0:00:00 2009-10-21 00:00:00
2 2009-10-28 0:00:00 2009-10-21 00:00:00
3 2009-11-26 0:00:00 2009-10-21 00:00:00
4 2009-11-21 0:00:00 2009-10-21 00:00:00

图上ID1有效期为31天
id2有效期为7天
ID3有效期为5天
ID4有效其为31天

现在要更新后为图下

图1
I_ID I_Valid UpdateTime
1 2009-11-26 0:00:00 2009-10-26 00:00:00
2 2009-11-02 0:00:00 2009-10-26 00:00:00
3 2009-10-31 0:00:00 2009-10-26 00:00:00
4 2009-11-06 0:00:00 2009-10-26 00:00:00

现在要如何更新时也对应更新I_valid的有效天数。
我写的是这样子的

Sqlt = "Select * from HouseInfo where I_ID In ("&I_ID&")"
Set LTObjrs = UseDB.EditDB(Sqlt)
Do while not LTObjrs.eof
i_valid=ltobjrs("i_valid")
updatetime=ltobjrs("updatetime")
sumDay = DateDiff("d",updatetime,i_valid)
iDateDiff = Cint(sumDay) 取得有效天数
I_Valid = DateAdd("d",iDateDiff,now()) 重新计算新的有效天数
LTObjrs.movenext
loop
Sql = "Update HouseInfo Set UpdateTime = '"&Now()&"',I_Valid='"&I_Valid&"' Where I_ID In ("&I_ID&")"

UseDB.EditDB(Sql)
UseDB.CloseDB()

这样子I_valid有效天数只取到ID1的天数更新时下面的都是同样的天数了,所以不行。谁知道帮忙解决一下。如何写。
只能取到ID1的有效天数
下面的就对不上有效天数了。
最佳答案
--sqlserver
update a set a.mapping_id=b.id from a,b where a.order_id = b.order_id;
--mysql
update a,b set a.mapping_id=b.id from a,b where a.order_id = b.order_id;
--oracle
update a set a.mapping_id=(select b.id from b where a.order_id = b.order_id) where exists (select 1 from b where a.order_id = b.order_id);
全部回答
Sql = "Update HouseInfo Set I_Valid=convert(varchar(10),dateadd(dd,datediff(dd,UpdateTime,getdate()),I_Valid),120), UpdateTime=convert(varchar(10),getdate(),120) " UseDB.EditDB(Sql) UseDB.CloseDB()
这个建议你去用数据库触发器做,不用在程序里面写sql语句,直接在数据库哪里做就行了 CREATE TRIGGER [触发器名] ON [A] FOR INSERT AS UPDATe a SET I_Valid = (SELECT DATEADD(day, 30, UpdateTime ) FROM inserted) WHERe I_ID = (SELECt tel FROM inserted) CREATE TRIGGER [触发器名] ON [A] FOR UPDATe AS UPDATE a SET I_Valid = (SELECT DATEADD(day, 30, UpdateTime ) FROM DELETeD)WHERe I_ID = (SELECT tel FROM DELETED) 还有什么不懂qq 175904944
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
月明松下房栊静打一动物是什么
中文转换藏文,在线等急!
单选题已知液化石油气的主要成分有丙烷(其化
海南三亚特产有哪些,海南岛有什么特色美食或
琪雅地址在什么地方,我要处理点事!
单选题下列物质燃烧时对空气无污染的是A.汽油
社会实践报告开头怎么写?
关于做微商的励志语录,激励想做微商人的句子
一台电气设备为30w,怎么计算它一个月使用了多
爱情公寓中曾老师出糗的片段
XBOX玩使命召唤8按什么键快速跑步?我最后一
下列说法正确的是A.相同温度下,饱和溶液一定
请问数学: 那么18÷(1+17%)是不是可以这样
内蒙古沙漠的诗词,收集关于内蒙古的诗词歌曲
开个野生鱼餐馆儿大约需要多少钱?
推荐资讯
请问右旋佐匹克隆和佐匹克隆那个好? 该吃哪
丹阳市公安局交通巡逻警察大队市区中队地址在
四川省达州市 宣汉县 白马乡 观岩村五组 危房
关于象山本地作家散文
安装adobe时候老是显示安装遇到错误 说我尝试
关于赛车的很酷的句子,关于赛车的句子
征集志愿是统考还是校考成绩
菜葫芦是什么,斗牛是什么意思
九华山一日游行程安排
为什么浏览器自动打开,为什么我的电脑自动打
请问用罗汉果冲水喝,喝多了好不好呢?
事实证明,一个物质女人你永远都别想打动她!
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?