mysql中实现递归查询?

今天遇到一个问题,要求在一张客户表和一张卡更新表之间实现关联替换。
需求是这样:有一些客户有一天换几张卡的情况,每次换卡卡号都会换新,旧卡号不会再用。如果一个客户一天换四次卡,会出现五张卡号关联一个客户的情况。

如果第二天抽取卡更新表的信息和客户信息表关联。其实就一个卡号字段要变,但是四次更新卡号的记录都要插入数据库中存储,问题是,怎么从卡一到卡五依次关联到这一个客户号,实现批量插入?求助!

目前的问题是,要关联的客户账户表中的客户号无法和卡更新表相关联,因卡更新表中无客户号字段。这是卡更新表中的旧卡号,新卡号字段

这是客户账户信息表中的字段
我想要跟act_cd字段相关联
客户账户表字段

这种情况如何将两张表关联起来呢?然后将新卡号关联到客户信息中,批量插入?我现在想到的sql语句是
查询出来旧卡号在新卡号列的对应主体信息,此为一个客户一天内一次换卡后又继续换卡,导致卡号多次变更的情况
insert into ori_pact
(
ctif_id,
act_cd,
act_tp,
act_typ,
act_limit,
address,
bind_mob,
contact,
cst_sex,
ctif_tp,
id_deadline,
id_no,
id_type,
is_self_acc,
nation,
occupation,
sales_flag,
sales_name
)
SELECT

lp.ctif_id,

CASE
WHEN lp.act_cd=uci.oldcard THEN uci.newcard
END act_cd,
-- lp.act_cd,
lp.act_tp,
lp.act_typ,
lp.act_limit,
lp.address,
lp.bind_mob,
lp.contact,
lp.cst_sex,
lp.ctif_tp,
lp.id_deadline,
lp.id_no,
lp.id_type,
lp.is_self_acc,
lp.nation,
lp.occupation,
lp.sales_flag ,
lp.sales_name
FROM
t_stan_pact lp,update_card_info uci
WHERE
lp.act_cd=uci.newcard AND uci.oldcard
IN
(SELECT
p1.newcard
FROM
update_card_info p1,update_card_info p2
WHERE
p1.oldcard=p2.newcard
)

但想了下,多次换卡情况还是解决不了

阅读 6.5k
1 个回答

感觉还不如在业务层去做
先把最新的id 放进去 循环查询
直到 时间过期 或者 没有 更久的数据
话说 客户更新卡号表 没有 客户字段 也是 真厉害

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题