2016-08-01 126 views
0

我有一個表tbl_loyaltypoints在這個表中的列status = 2有默認值如何根據條件更新記錄?

現在我有以下查詢來獲取所有記錄

select lp.order_id, DATEDIFF(CURDATE(), FROM_UNIXTIME(lp.created_at)) as createon, 
     oi.deal_id, wo.returnWithin, lp.status 
from tbl_loyaltypoints lp 
inner join tbl_orders ord on lp.order_id = ord.id 
inner join tbl_order_item oi on lp.order_id = oi.order_id 
inner join tbl_workorders wo on oi.deal_id = wo.id 
where ord.order_type = 1 
order by lp.id DESC; 

輸出:

order_id createon deal_id returnWithin status 
1045  4   160  20   2 
1044  4   160  20   2 
1043  20   160  20   2 

我想更新狀態tbl_loyaltypoints.statuscreateon==returnWithin

有沒有辦法使用Mysql來做到這一點?

回答

1

可以改造selectjoin

update tbl_loyaltypoints lp inner join 
     tbl_orders ord 
     on lp.order_id = ord.id inner join 
     tbl_order_item oi 
     on lp.order_id = oi.order_id inner join 
     tbl_workorders wo 
     on oi.deal_id = wo.id 
    set lp.status = ?? 
where ord.order_type = 1 and 
     DATEDIFF(CURDATE(), FROM_UNIXTIME(lp.created_at)) = wo.returnWithin; 

不指定新的狀態是什麼。 ??是一個佔位符。

+0

新狀態將爲狀態= 1 – Arunendra

+0

謝謝它正在工作 – Arunendra