drop procedure if exists move_track_data; delimiter // create procedure move_track_data() begin declare i int default 0; start transaction; set i = 1; case when i = 1 then select 'is 1'; when i = 2 then select 'is 2'; else select 'is 3'; end case; commit; end; // call move_track_data(); delimiter ; select * from score_driving_track where trackid in( select trackid from score_driving_track where trackid % 10 = 1); insert into score_driving_track_0 select * from score_driving_track where trackid in( select trackid from score_driving_track where trackid % 10 =0); ####################################################################################################3 set time_zone = '+8:00'; set GLOBAL event_scheduler = 1; use test; drop event if exists upload_to_sdmp; DELIMITER // create event upload_to_sdmp on schedule every 1 week starts timestamp '2015-10-12 02:00:00' do call move_score_driving_track_data(); drop procedure if exists move_score_driving_track_data; delimiter // create procedure move_score_driving_track_data() begin declare i int default 0; declare t_error integer default 0; declare continue handler for sqlexception set t_error = 1; start transaction; set i = 0; while i < 10 do set @sqlTrackids = concat('select group_concat(distinct trackid) into @trackids from score_driving_track where trackid % 10 = ', i); select @sqlTrackids; prepare sqlTrackidsNormal from @sqlTrackids; execute sqlTrackidsNormal; select @trackids; set @sqlInsert = concat('insert into score_driving_track_', i, ' select * from score_driving_track where find_in_set(trackid, ''', @trackids, ''')'); select @sqlInsert; prepare sqlInsertNormal from @sqlInsert; execute sqlInsertNormal; set @sqlDelete = concat('delete from score_driving_track', ' where find_in_set(trackid ,''', @trackids, ''')'); select @sqlDelete; prepare sqlDeleteNormal from @sqlDelete; #execute sqlDeleteNormal; set i = i + 1; end while; if t_error = 1 then rollback; else commit; end if; end; // call move_score_driving_track_data(); SELECT @@global.sort_buffer_size; select * from score_driving_track where trackid >= 2270; select * from score_driving_track_0; select * from score_driving_track_1; select * from score_driving_track_2; select * from score_driving_track_3; select * from score_driving_track_4; select * from score_driving_track_5; select * from score_driving_track_6; select * from score_driving_track_7; select * from score_driving_track_8; select * from score_driving_track_9; delete from score_driving_track_0; delete from score_driving_track_1; delete from score_driving_track_2; delete from score_driving_track_3; delete from score_driving_track_4; delete from score_driving_track_5; delete from score_driving_track_6; delete from score_driving_track_7; delete from score_driving_track_8; delete from score_driving_track_9; SET GLOBAL group_concat_max_len=1024000; show variables like "group_concat_max_len"; ##################################################################################### call move_score_driving_track_data(); SELECT @@global.sort_buffer_size; SET GLOBAL group_concat_max_len=1024000; show variables like "group_concat_max_len"; select group_concat(distinct trackid) from score_driving_track where trackid % 10 = 0; SELECT @@global.group_concat_max_len; show warnings; #[mysqld] #explicit_defaults_for_timestamp=true #group_concat_max_len=102400 select distinct trackid from score_driving_track where trackid % 10 = 0; select group_concat(distinct trackid) from score_driving_track where trackid % 10 = 0 and trackid < 50; delimiter ; select concat('score_driving_track_', 1); select * from score_driving_track_0; delete from score_driving_track_0; ############################################################################## set time_zone = '+8:00'; set GLOBAL event_scheduler = 1; use test; drop event if exists upload_to_sdmp; DELIMITER // create event upload_to_sdmp on schedule every 1 second #starts timestamp '2014-07-30 10:00:00' do begin insert into b values(3,'222'); insert into b values(2,'222'); end // DELIMITER ; select * from b; select group_concat(trackid) into @temp from score_driving_track where trackid < 100; select @temp; select * from score_driving_track where find_in_set(trackid, @temp); select REPLACE(@temp,'''''''',''); select CHAR_LENGTH(@temp)-CHAR_LENGTH(REPLACE(@temp,'','')) + 1; select * from score_driving_track where trackid in (select group_concat(trackid) from score_driving_track where trackid < 50); select * from score_driving_track where find_in_set(trackid, (select group_concat(distinct trackid) from score_driving_track where trackid < 50)); select * from users;