2012-02-03 6 views
1

私は、自動的に週単位で複製しようとしている日付と瞳孔IDを含む予定表を持っています。私は、それぞれの予定が一週間先に自身のコピーを持っているかどうかを検出するクエリを実行したいので、元のデータは:条件付きでMySQLのレコードを複写する

PupilID Date 
1   10th May 
2   16th May 

問い合わせ後、

PupilID Date 
1   10th May 
2   16th May 
1   17th May 
2   23rd May 

私は、次を使用しようとしています運がない。提案は非常に高く評価されるだろう。私は既に仕事をしているコードを持っていますが、それは本当に遅くなっています。

INSERT timetable (pupil_id,date) SELECT timetable.pupil_id AS pupil_id2,DATE_ADD(timetable.date,INTERVAL 14 DAY) AS date2 FROM timetable WHERE NOT EXISTS pupil_id2=timetable.pupil_id AND date2=timetable.date; 

答えて

1

将来の予定があるかどうかを確認するだけで十分でしょうか?

はこの打撃を与える:

insert into timetable (pupil_id,date) 
select t.pupil_id, DATE_ADD(t.date, INTERVAL 14 DAY) 
from timetable t 
where not exists (select 1 from timetable 
         where pupil_id = t.pupil_id 
         and date > t.date) 

あなたが特に先に14日間をチェックするために、最後の句を変更することができます:

where not exists (select 1 from timetable 
         where pupil_id = t.pupil_id 
         and date = DATE_ADD(t.date, INTERVAL 14 DAY))   

でも、私は最初のクエリをお勧めします。

+0

あなたは簡単に見えました!私はいくつかの条件を追加する必要がありますが、そのフォーマットはそれを簡単にします。 –

関連する問題