mysql子查詢更新問題

2021-06-25 23:03:24 字數 1489 閱讀 4178

mysql不支援對同乙個表查詢後做修改

(update

、delete)

操作,是其功能問題。

原來的sql語句:

update t_collection_contract_base base

set base.total_interest_penalty = (select

sum(rp.remain_interest_penalty)

from t_xyb_contract_repayment_plan rp

where rp.contract_id = base.contract_id

and rp.state in('3', '4')),

base.late_fee = (select

sum(rp.remain_late_fee)

from t_xyb_contract_repayment_plan rp,t_collection_contract_base

where rp.contract_id = base.contract_id

and rp.state in('3', '4')),

base.plan_total_amount = (select

sum(remain_total_amount)

from t_xyb_contract_repayment_plan rp

where rp.contract_id = base.contract_id

and rp.state in('3', '4'))

where base.is_late = "y"

修改後的sql:

把子查詢做一次轉換,成為虛擬表,即可正常,此為優化後的語句。

update t_collection_contract_base as base inner join (select

rp.contract_id as contractid,

sum(rp.remain_interest_penalty) as penalty,

sum(rp.remain_late_fee) as fee,

sum(remain_total_amount) as amount

from t_xyb_contract_repayment_plan rp

where rp.contract_id

and rp.state in('3', '4') group by rp.contract_id)as abc

on base.contract_id=abc.contractid

set base.total_interest_penalty =abc.penalty,

base.plan_total_amount=abc.fee,

base.plan_total_amount=abc.amount

where base.is_late = "y"

mysql併發更新問題

問題背景 假設mysql資料庫有一張會員表vip member innodb表 結構如下 當乙個會員想續買會員 只能續買1個月 3個月或6個月 時,必須滿足以下業務要求 如果end at早於當前時間,則設定start at為當前時間,end at為當前時間加上續買的月數 如果end at等於或晚於當...

mysql分表的查詢和更新問題

mysql merge合併表,對錶的儲存引擎 有要求 考慮對於 表引擎的限制,實現 分表查詢 但是 這只是滿足於查詢,那麼查詢update 呢?總不能迴圈去查詢每個表吧?由查詢union all和update的union all可知,update語句是不能直接用union all進行連線。那麼按條件...

hcharts更新問題

顯示 hcharts的顯示這裡就不多說了,基本官網上的例子都有 需要說明一點的是,在柱狀圖中表示時,可以使用座標的方式指定表示的橫座標,而不是只能像官網上一樣全部寫完 data可以寫成 1,5 2,8 其中1代表橫座標,5代表縱座標 更新 hcharts更新時series不會自動增加或減少,需要我們...