鍍金池/ 問答/數(shù)據(jù)庫/ mysql中實(shí)現(xiàn)遞歸查詢?

mysql中實(shí)現(xiàn)遞歸查詢?

今天遇到一個(gè)問題,要求在一張客戶表和一張卡更新表之間實(shí)現(xiàn)關(guān)聯(lián)替換。
需求是這樣:有一些客戶有一天換幾張卡的情況,每次換卡卡號都會換新,舊卡號不會再用。如果一個(gè)客戶一天換四次卡,會出現(xiàn)五張卡號關(guān)聯(lián)一個(gè)客戶的情況。

如果第二天抽取卡更新表的信息和客戶信息表關(guān)聯(lián)。其實(shí)就一個(gè)卡號字段要變,但是四次更新卡號的記錄都要插入數(shù)據(jù)庫中存儲,問題是,怎么從卡一到卡五依次關(guān)聯(lián)到這一個(gè)客戶號,實(shí)現(xiàn)批量插入?求助!

目前的問題是,要關(guān)聯(lián)的客戶賬戶表中的客戶號無法和卡更新表相關(guān)聯(lián),因卡更新表中無客戶號字段。這是卡更新表中的舊卡號,新卡號字段

這是客戶賬戶信息表中的字段
我想要跟act_cd字段相關(guān)聯(lián)
客戶賬戶表字段

這種情況如何將兩張表關(guān)聯(lián)起來呢?然后將新卡號關(guān)聯(lián)到客戶信息中,批量插入?我現(xiàn)在想到的sql語句是
查詢出來舊卡號在新卡號列的對應(yīng)主體信息,此為一個(gè)客戶一天內(nèi)一次換卡后又繼續(xù)換卡,導(dǎo)致卡號多次變更的情況
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
)

但想了下,多次換卡情況還是解決不了

回答
編輯回答
若相惜

感覺還不如在業(yè)務(wù)層去做
先把最新的id 放進(jìn)去 循環(huán)查詢
直到 時(shí)間過期 或者 沒有 更久的數(shù)據(jù)
話說 客戶更新卡號表 沒有 客戶字段 也是 真厲害

2017年2月6日 22:24