I have a master table as:
id(PRIMARY KEY) customername    zipcode identitynumber  createdtimestamp
ABC                 JOHN         91421     12346          2:09:31 AM
DEF                 CARTER       91421     12346    2:09:31 AM
PQR                AURTHUR       13133     767676   2:09:31 AM
and another table child as below.
ID(PRIMARY) customername    zipcode identitynumber  
xyz           peter          91421  12346   
MNO           CARTER         91421  12346   
I want to get all the records from master table that are having createdtimestamp is less than 24 hours and insert in to child table only if zipcode, identitynumber match but not customername. Basically inserting various names in child table having same zipcode and  identitynumber and primary key of master table. So, finally child table should has:
ID(PRIMARY) customername    zipcode identitynumber  
xyz          peter            91421 12346   
MNO          CARTER           91421 12346   
ABC          JOHN             91421 12346
I tried with below query but failing as primary key violation even though child tables doesn't have primary key.
insert into childtable
    (ID,customername,zipcode,identitynumber)
    select
    master.id ,
    master.customername,
    child.zipcode,
    child.identitynumber
    FROM   childtable  child
    inner JOIN mastertable master ON master.CREATED_TIMESTAMP > DATE_SUB(NOW(), INTERVAL 24 HOUR)
    and master.identitynumber = child.identitynumber 
    AND master.zipcode = child.zipcode
    WHERE  NOT EXISTS 
    ( SELECT 1  FROM childtable existingchild
      WHERE  existingchild.identitynumber = master.identitynumber
      AND existingchild.customername  = master.customername
      AND existingchild.zipcode  =  master.zipcode);
Please advise with best query.
