MySQL:填写临时表

时间:2013-11-22 14:29:27

标签: mysql sql

我有一个表Table1。更多[details] 我想做几件事:

- Get table T2 which have the same fields 
 - T2 contains rows from Table1 on responding on the following conditions :
 - If the difference between the start date and end date for two different rows and for the same id is less than 3 so  end date gets the value of the start date else this row will be inserted in T2 

我试图实现它

CREATE TEMPORARY TABLE tempabsences  LIKE absences;
    INSERT INTO tempabsences(id ,utilisateurs_id,date_debut,tempabsences.date_fin,type,statut)
    SELECT absences.utilisateurs_id ,absences.utilisateurs_id,absences.date_debut,absences.date_fin,absences.type,absences.statut
    FROM absences 
    ORDER BY absences.date_debut ASC, absences.utilisateurs_id ASC
    ON DUPLICATE KEY UPDATE tempabsences.date_fin=IF(abs(DATEDIFF(tempabsences.date_fin,absences.date_debut)<=3) ,absences.date_fin,tempabsences.date_fin),
                tempabsences.date_debut=IF(abs(DATEDIFF(tempabsences.date_fin,absences.date_debut)<=3) ,tempabsences.date_debut,absences.date_debut),
                tempabsences.utilisateurs_id=absences.utilisateurs_id , 
                tempabsences.id=IF(abs(DATEDIFF(tempabsences.date_fin,absences.date_debut)<=3),tempabsences.id,(select MAX(absences.utilisateurs_id)from absences )+absences.id )

查询不响应条件,它会更新行而不插入它。

0 个答案:

没有答案