2016-08-01 20 views
0

私は列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; 

が出力取得するクエリ次したデフォルト値

を持って、このテーブルのテーブルtbl_loyaltypointsを持っている:私は、ステータスを更新したい

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

tbl_loyaltypoints.statusの場合createon==returnWithin

Mysqlを使用してこれを行う方法はありますか?

答えて

1

あなたはjoinselectを変換することができます。

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

関連する問題