记录update select语法及内置函数INTERVAL实例

        最近遇到一个小需求,大致需求是取表1中的timestamp类型的某个字段的最大值并减去30分钟,赋值给表2中的timestamp类型字段,用来做下一步。

        由此得出具体思路:

                1,需要先得出表1中timestamp类型字段的最大值

                2,用得到的最大值减去30min

                3,将最终值赋值给表2中的字段

        那具体的sql应该怎么写呢?

        先来看语法,和以上思路一一对应

                1,表1中timestamp类型字段的最大值

select max(column) from table [WHERE condition] ;

                 2,用得到的最大值减去30min

                此处只需要结果,故使用select,搭配内置函数INTERVAL

select column - INTERVAL '30 minutes' from table [WHERE condition] ;

                3,将最终值赋值给表2中的字段

update table2
set column1 = column from table1 [WHERE condition]) 
where table2.column2 = value ;

                 注:如果无条件则会更新表中所有数据,故执行不带条件的update需要慎重慎重再慎重

                组合起来即:

update table2
set column1 = (select max(column) - INTERVAL '30 minutes' from table1) 
where table2.column2 = value ;

        实例: 

update workorder
set appointmenttime = (select max(completiontime) - INTERVAL '30 minutes' from productline) 
where constructionstatus = 'Undispatched';

        博主使用的是postgressql数据库,但关系型数据库语法都大差不差。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值