2017-03-13 4 views
-2

これは既存のフィールドを挿入し続けますが、既存のフィールドは挿入しないでください。MySQLプロシージャは複製されたフィールドを継続的に挿入します

BEGIN 

INSERT INTO ohrm_attendance_raw_data (punch_time, device_id, card_number) 
SELECT punch_time, device_id, card_number 
FROM ohrm_attendance_master 
WHERE ohrm_attendance_master.punch_time >= DATE_SUB(now(), INTERVAL 1 MONTH) 
AND NOT EXISTS (
    SELECT 1 FROM ohrm_attendance_record WHERE ohrm_attendance_record.punch_in_user_time = ohrm_attendance_master.punch_time) 
AND NOT EXISTS (
    SELECT 1 FROM ohrm_attendance_record WHERE ohrm_attendance_record.punch_out_user_time = punch_time); 

end 
+0

SQLステートメントは2つの条件によって異なります。問題がどこにあるかを見つけるための条件をテストします。 – funcoding

答えて

0

それはあなたのフィールドのように見えますpunch_time日時タイプまたはそのような何かがある...ので、私はあなたの問題は次の2つの日付を比較していることだと思う...そしてそれに伴う問題は何でしょう?MySQLおよびその他のこと

BEGIN 

    INSERT INTO ohrm_attendance_raw_data (punch_time, device_id, card_number) 
    SELECT punch_time, device_id, card_number 
    FROM ohrm_attendance_master 
    WHERE ohrm_attendance_master.punch_time >= DATE_SUB(now(), INTERVAL 1 MONTH) 
    AND NOT EXISTS (
     SELECT 1 FROM ohrm_attendance_record WHERE DATE(ohrm_attendance_record.punch_in_user_time) = DATE(ohrm_attendance_master.punch_time)) 
    AND NOT EXISTS (
     SELECT 1 FROM ohrm_attendance_record WHERE DATE(ohrm_attendance_record.punch_out_user_time) = DATE(punch_time)); 
END 
DATE機能で

:RDBMSは...時間、分、秒、ミリ秒を含めて、それは比較が偽であることを確認することができますので、...あなたは、日付をTRUNCまたはそれにいくつかの形式を与えることができる比較します

DATE_FORMAT関数:

関連する問題