Here are two variants of the statment both copied out of the error logs. INSERT INTO todolist ( person_in_charge_id, creator_user_id, create_datetime, claim_id, claim_no, claim_type_id, parcel_nr, finished_yn, vd, rvd, ed, workflow_id, thread_id, parent_thread_id, thread_depot_no, thread_is_deleted, is_delegated_swf, depot_type, time_limit_wf, is_EXPRESS, gbz ) SELECT thread.fk_user_id, claim.fk_initiator_id, claim.create_datetime, claim.id, claim.claim_no, claim.fk_claim_type_id, claim.parcel_no, claim.finished_yn, claim.send_depot_no, claim.responsable_depot_no, claim.receive_depot_no, thread.fk_workflow_id, thread.id AS fk_thread_id, thread.parent_thread_id, thread.fk_depot_no, thread.is_deleted, thread.depot_type = 'ed', thread.depot_type, timer.ts_tl, claim.is_EXPRESS, claim.gbz FROM (thread, claim) LEFT JOIN timer ON timer.fk_thread_id = thread.parent_thread_id WHERE claim.claim_no IS NOT null AND claim.is_AD = 0 AND thread.is_on_hold=0 AND archive_suspend=0 AND thread.fk_claim_id = claim.id AND (thread.fk_user_id=37139 OR (claim.fk_initiator_id=37139 AND thread.fk_user_id=0 AND parent_thread_id=0) OR (thread.fk_depot_no IN (122,124) AND thread.fk_user_id=0)) AND claim.is_suspended='0' AND claim.storno_type!='1' AND thread.depot_type='ed' AND thread.is_deleted=0 AND thread.is_suspended_ed=0 and not exists ( select * from thread as th where th.id = thread.parent_thread_id and th.fk_depot_no = thread.fk_depot_no and th.depot_type = thread.depot_type and th.fk_claim_id = claim.id) And a one with a more complex WHERE clause INSERT INTO todolist ( person_in_charge_id, creator_user_id, create_datetime, claim_id, claim_no, claim_type_id, parcel_nr, finished_yn, vd, vd_code, rvd, rvd_code, ed, ed_code, workflow_id, thread_id, parent_thread_id, thread_depot_no, thread_is_deleted, is_delegated_swf, depot_type, time_limit_wf, is_EXPRESS, gbz ) SELECT thread.fk_user_id, claim.fk_initiator_id, claim.create_datetime, claim.id, claim.claim_no, claim.fk_claim_type_id, claim.parcel_no, claim.finished_yn, claim.send_depot_no, d1.depot_code AS vd_code, claim.responsable_depot_no, d2.depot_code AS rvd_code, claim.receive_depot_no, d3.depot_code AS ed_code, thread.fk_workflow_id, thread.id AS fk_thread_id, thread.parent_thread_id, thread.fk_depot_no, thread.is_deleted, thread.depot_type = 'ed', thread.depot_type, timer.ts_tl, claim.is_EXPRESS, claim.gbz FROM (thread, claim) LEFT JOIN depot AS d1 ON claim.send_depot_no = d1.depot_no LEFT JOIN depot AS d2 ON claim.responsable_depot_no = d2.depot_no LEFT JOIN depot AS d3 ON claim.receive_depot_no = d3.depot_no LEFT JOIN timer ON timer.fk_thread_id = thread.parent_thread_id WHERE claim.claim_no IS NOT null AND claim.is_AD != 0 AND thread.is_on_hold=0 AND archive_suspend=0 AND thread.fk_claim_id = claim.id AND ( thread.fk_depot_no IN (108,109) OR (claim.fk_initiator_id=4406 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=6304 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=5972 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=8170 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=2057 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=4405 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=9573 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=370 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=2773 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=12776 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=2201 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=377 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=13812 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=14449 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=27509 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=1367 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=8273 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) OR (claim.fk_initiator_id=371 AND thread.fk_user_id=0 AND thread.parent_thread_id=0) ) AND claim.is_suspended='0' AND claim.storno_type!='1' AND claim.is_AD=1 AND thread.is_deleted=0 AND thread.is_suspended_ed=0 and not exists (select * from thread as th where th.id = thread.parent_thread_id and th.fk_depot_no = thread.fk_depot_no and th.depot_type = thread.depot_type and th.fk_claim_id = claim.id) Here is the table structure: The destinaton table CREATE TEMPORARY TABLE todolist ( user_name varchar(255) default NULL, person_in_charge_id int(11) UNSIGNED default NULL, person_in_charge varchar(255) default NULL, creator_user_id int(11) UNSIGNED default NULL, create_datetime datetime default NULL, claim_id int(11) UNSIGNED default NULL, claim_no varchar(255) default NULL, claim_type_id int(10) UNSIGNED default NULL, parcel_nr varchar(255) default NULL, finished_yn tinyint(1) default NULL, vd int(11) UNSIGNED default NULL, vd_code varchar(4) default NULL, rvd int(11) UNSIGNED default NULL, rvd_code varchar(4) default NULL, ed int(11) UNSIGNED default NULL, ed_code varchar(4) default NULL, status varchar(255) default NULL, time_limit_wf int(11) UNSIGNED default 0, workflow_id int(11) UNSIGNED default NULL, thread_id int(11) UNSIGNED default NULL, parent_thread_id int(11) UNSIGNED default NULL, thread_depot_no int(11) UNSIGNED default NULL, thread_is_deleted tinyint(1) default NULL, is_delegated_swf int(11) UNSIGNED default NULL, plz char(6) default '', depot_type varchar(8) default '', is_EXPRESS tinyint(1) default 0, gbz int(10) default 0 ) TYPE=InnoDB; The source tables: CREATE TABLE `timer` ( `id` bigint(20) NOT NULL auto_increment, `ts_tl_reminder` int(20) unsigned default '0', `exceed_tl_reminder_action` text, `ts_tl` int(20) unsigned default '0', `exceed_tl_return_value` smallint(6) unsigned default NULL, `timeout_action` text, `system_event_return_value` int(10) unsigned default '0', `fk_logs_id` int(10) unsigned default '0', `fk_thread_id` bigint(20) unsigned default '0', `target_module_id` int(10) unsigned default NULL, `loop_timer` tinyint(1) unsigned default '0', PRIMARY KEY (`id`), KEY `fk_thread_id` (`fk_thread_id`), KEY `fk_logs_id` (`fk_logs_id`) ) ENGINE=InnoDB AUTO_INCREMENT=1173972 DEFAULT CHARSET=utf8; CREATE TABLE `claim` ( `id` bigint(20) NOT NULL auto_increment, `progress_val` int(11) default '0', `guilty_yn` int(11) default '0', `request_cnt` int(11) default '1', `claim_no` varchar(20) default NULL, `send_depot_no` int(11) default NULL, `receive_depot_no` int(11) default NULL, `responsable_depot_no` bigint(20) default NULL, `fk_initiator_id` int(10) unsigned default NULL, `fk_last_initiator_id` int(10) unsigned default NULL, `create_datetime` datetime default NULL, `last_req_datetime` datetime default NULL, `fibu_finished_datetime` datetime default NULL, `claim_cleared_datetime` datetime default NULL, `parcel_no` varchar(20) default NULL, `cust_claim_no` varchar(20) default NULL, `pickup_date` datetime default NULL, `time_limit` int(10) unsigned default NULL, `is_suspended` enum('0','1') default '0', `storno_type` tinyint(4) default '0', `finished_yn` tinyint(1) default '0', `archived_yn` tinyint(1) default '0', `fk_claim_type_id` bigint(20) NOT NULL default '0', `is_rnpd` tinyint(1) default NULL, `fk_parceltrack_id` bigint(20) NOT NULL default '0', `sbs_vd` bigint(20) default NULL, `sbs_ed` bigint(20) default NULL, `fk_carrier_vd` bigint(20) default NULL, `fk_carrier_ed` bigint(20) default NULL, `fk_tourno_vd` int(10) unsigned default NULL, `fk_tourno_ed` int(10) unsigned default NULL, `archive_suspend` tinyint(4) default '0', `is_AD` tinyint(1) NOT NULL default '0', `is_EXPRESS` tinyint(4) NOT NULL default '0', `fk_archive_claim_id` bigint(20) default NULL, `archive_claim_no` varchar(20) default NULL, `parcel_no_search` varchar(20) NOT NULL, `gbz` int(10) unsigned default '0', `timer` datetime default NULL, PRIMARY KEY (`id`), KEY `finished_yn` (`finished_yn`), KEY `archived_yn` (`archived_yn`), KEY `claim_no` (`claim_no`), KEY `archive_suspend` (`archive_suspend`), KEY `fk_initiator_id` (`fk_initiator_id`), KEY `send_depot_no` (`send_depot_no`), KEY `receive_depot_no` (`receive_depot_no`), KEY `responsable_depot_no` (`responsable_depot_no`), KEY `sbs_vd` (`sbs_vd`), KEY `sbs_ed` (`sbs_ed`), KEY `fk_claim_type_id` (`fk_claim_type_id`), KEY `create_datetime` (`create_datetime`), KEY `fk_parceltrack_id` (`fk_parceltrack_id`), KEY `parcel_no` (`parcel_no`), KEY `parcel_no_search` (`parcel_no_search`) ) ENGINE=InnoDB AUTO_INCREMENT=1267797 DEFAULT CHARSET=utf8; CREATE TABLE `thread` ( `id` bigint(20) NOT NULL auto_increment, `last_relation` bigint(20) unsigned default NULL, `tstamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `fk_claim_id` bigint(20) NOT NULL default '0', `fk_workflow_id` bigint(20) NOT NULL default '0', `parent_thread_id` bigint(20) NOT NULL default '0', `fk_user_id` bigint(20) NOT NULL default '0', `fk_depot_no` int(11) default NULL, `depot_type` varchar(255) default NULL, `privilege` varchar(40) NOT NULL default '0', `lock_dice_user_id` int(10) unsigned default '0', `ts_lock_time_limit` int(10) unsigned default '0', `lock_user_session_id` varchar(255) default NULL, `archived_yn` tinyint(1) NOT NULL default '0', `thread_counter` int(10) unsigned default '0', `is_independent` smallint(6) default '0', `is_deleted` smallint(6) default '0', `has_timed_out` tinyint(1) NOT NULL default '0', `is_suspended_ed` tinyint(4) default '0', `is_storno_yn` tinyint(4) default '0', `is_on_hold` tinyint(1) default '0', `on_hold_since` datetime default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `lock_dice_user_id` (`lock_dice_user_id`), KEY `lock_user_session_id` (`lock_user_session_id`), KEY `fk_claim_id` (`fk_claim_id`), KEY `fk_depot_no` (`fk_depot_no`), KEY `is_deleted` (`is_deleted`), KEY `parent_thread_id` (`parent_thread_id`), KEY `is_independent` (`is_independent`), KEY `fk_user_id` (`fk_user_id`), KEY `fk_workflow_id` (`fk_workflow_id`), KEY `archived_yn` (`archived_yn`), KEY `is_suspended_ed` (`is_suspended_ed`), KEY `is_storno_yn` (`is_storno_yn`), KEY `is_on_hold` (`is_on_hold`), KEY `ts_lock_time_limit` (`ts_lock_time_limit`) ) ENGINE=InnoDB AUTO_INCREMENT=7259327 DEFAULT CHARSET=utf8;