UPDATE history_condition SET status='Active' where DATE(change_date) = '2015-05-10' SELECT * FROM bus_info as bus LEFT JOIN product_class as cls ON bus.class_id = cls.class_id LEFT JOIN route as rt ON bus.route_id=rt.route_id LEFT JOIN delivery_to as del ON bus.delivery_to_id=del.delivery_to_id LEFT JOIN (SELECT his.product_id, his.condition_id AS cond_id, cnd.condition, his.change_date FROM history_condition as his LEFT JOIN present_condition as cnd ON his.condition_id=cnd.condition_id INNER JOIN (SELECT product_id, MAX(change_date) AS change_date FROM history_condition WHERE date( change_date ) <= '2015-05-14' GROUP BY product_id) as max ON his.product_id=max.product_id AND his.change_date = max.change_date WHERE his.status = 'Active' ORDER BY `his`.`product_id` ASC) as hist ON bus.bus_id=hist.product_id where (bus.delivery_to_id in ('2','3','4','5','6','18','20') and hist.cond_id IS NULL) UPDATE history_condition SET status='Active' where product_id in (SELECT bus_id FROM bus_info as bus LEFT JOIN product_class as cls ON bus.class_id = cls.class_id LEFT JOIN route as rt ON bus.route_id=rt.route_id LEFT JOIN delivery_to as del ON bus.delivery_to_id=del.delivery_to_id LEFT JOIN (SELECT his.product_id, his.condition_id AS cond_id, cnd.condition, his.change_date FROM history_condition as his LEFT JOIN present_condition as cnd ON his.condition_id=cnd.condition_id INNER JOIN (SELECT product_id, MAX(change_date) AS change_date FROM history_condition WHERE date( change_date ) <= '2015-05-14' GROUP BY product_id) as max ON his.product_id=max.product_id AND his.change_date = max.change_date WHERE his.status = 'Active' ORDER BY `his`.`product_id` ASC) as hist ON bus.bus_id=hist.product_id where (bus.delivery_to_id in ('2','3','4','5','6','18','20') and hist.cond_id IS NULL)) SELECT * FROM history_condition where product_id in (SELECT bus_id FROM bus_info as bus LEFT JOIN product_class as cls ON bus.class_id = cls.class_id LEFT JOIN route as rt ON bus.route_id=rt.route_id LEFT JOIN delivery_to as del ON bus.delivery_to_id=del.delivery_to_id LEFT JOIN (SELECT his.product_id, his.condition_id AS cond_id, cnd.condition, his.change_date FROM history_condition as his LEFT JOIN present_condition as cnd ON his.condition_id=cnd.condition_id INNER JOIN (SELECT product_id, MAX(change_date) AS change_date FROM history_condition WHERE date( change_date ) <= '2015-05-14' GROUP BY product_id) as max ON his.product_id=max.product_id AND his.change_date = max.change_date WHERE his.status = 'Active' ORDER BY `his`.`product_id` ASC) as hist ON bus.bus_id=hist.product_id where (bus.delivery_to_id in ('2','3','4','5','6','18','20') and hist.cond_id IS NULL)) SELECT * FROM bus_info as bus LEFT JOIN (SELECT hist.change_id, his.product_id, his.condition_id AS cond_id, his.delivery_to_id AS del_id, cnd.condition, his.change_date FROM history_condition as his LEFT JOIN present_condition as cnd ON his.condition_id=cnd.condition_id INNER JOIN (SELECT product_id, MAX(change_date) AS change_date FROM history_condition WHERE date( change_date ) <= '2015-05-14' GROUP BY product_id) as max ON his.product_id=max.product_id AND his.change_date = max.change_date WHERE his.status = 'Active' ORDER BY `his`.`product_id` ASC) as hist ON bus.bus_id=hist.product_id where (hist.del_id = '0' and bus.delivery_to_id = '2') UPDATE history_condition SET delivery_to_id='2' where change_id in (Select his.change_id from bus_info as bus left join (select change_id, product_id, delivery_to_id as del_id from history_condition) as his on bus.bus_id = his.product_id where his.del_id = '0' and bus.delivery_to_id = '2')