From a4e0cd9f33bb36fce68cab003c88665dfedc3caf Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 4 Dec 2019 14:32:44 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...204030230_migrate_exercise_single_question_score.rb | 2 +- db/migrate/20191204062733_add_temp_migration.rb | 2 +- .../20191204063225_add_exercise_temp_migration.rb | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20191204063225_add_exercise_temp_migration.rb diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index a69e8ecef..ddb9a2794 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -2,7 +2,7 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] def change # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in - (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id, exercise_choice_id having count(*) > 1) a) + (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) ActiveRecord::Base.connection.execute sql diff --git a/db/migrate/20191204062733_add_temp_migration.rb b/db/migrate/20191204062733_add_temp_migration.rb index f8692c070..691e5e5ca 100644 --- a/db/migrate/20191204062733_add_temp_migration.rb +++ b/db/migrate/20191204062733_add_temp_migration.rb @@ -2,7 +2,7 @@ class AddTempMigration < ActiveRecord::Migration[5.2] def change # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in - (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id, exercise_choice_id having count(*) > 1) a) + (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) ActiveRecord::Base.connection.execute sql diff --git a/db/migrate/20191204063225_add_exercise_temp_migration.rb b/db/migrate/20191204063225_add_exercise_temp_migration.rb new file mode 100644 index 000000000..7f9428911 --- /dev/null +++ b/db/migrate/20191204063225_add_exercise_temp_migration.rb @@ -0,0 +1,10 @@ +class AddExerciseTempMigration < ActiveRecord::Migration[5.2] + def change + # 删除判断、单选题中生成多条记录,但exercise_choice_id不同的数据 + sql = %Q(delete from exercise_answers where (exercise_question_id, user_id) in + (select * from (select exercise_question_id, user_id from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1) a) + and id not in (select * from (select min(exercise_answers.id) from exercise_answers join exercise_questions eq on exercise_question_id = eq.id where eq.question_type in (0, 2) group by exercise_question_id, user_id having count(*) > 1 order by exercise_answers.id) b)) + ActiveRecord::Base.connection.execute sql + + end +end