2016-08-01 123 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