编辑:利用时间字段获取子查询更新行数

背景:

*.假设Mysql根据某个条件更新了10行,当再次执行此SQL时,即使仍有10行满足更新条件,但是更新行数却返回0.

*.在做复杂ETL(反复调试)时,当更新行数返回0时,不知道是没有更新到某行,还是已经更新过了,所以需要无论如何执行,都要返回的行数,以确认所执行SQL是正确的.

解决:

*.使用更新时间字段来完成

 

实际案例:

# 同时要加上本周期以前的相同订单号的所有订单(is_end=1除外)
@Run.ExecuteSql("标记wx参与计算的旧订单",@"
update bi_data.order_list_wx
set is_start='1',proc_time=now()
where 1=1
and is_end='0'
and 交易时间<'{{开始日期}}'
and 商户订单号 in
(
select 商户订单号
from
(
select 商户订单号
from bi_data.order_list_wx
where 1=1
and is_end='0'
and 交易时间>='{{开始日期}}' and 交易时间<'{{截止日期}}'
and 商品名称 like '四部曲APP%'
) tt
)
")

 

posted @ 2021-12-02 20:53  xiaoyongdata  阅读(26)  评论(0编辑  收藏  举报