2010-07-09 4 views
0

J'ai deux tables:Insère les lignes de 'report_temp' qui ne sont pas dans 'report'?

report (reportID, VendorName, VendorID, MfgDate, PurchaseDate, etc.,) 

Dans report tableau reportID est la clé primaire.

report_temp a le même ensemble de colonnes comme report, mais aucune contrainte.

Je dois insert the rows from report_temp to report où le reportID n'est pas le même. J'ai écrit comme

INSERT INTO report(reportID, VendorName, VendorID, MfgDate, PurchaseDate,...) 
     NOT (SELECT reportID, VendorName, VendorID, MfgDate, PurchaseDate,... 
      FROM report INNER JOIN report_temp USING (reportID, VendorName, 
       VendorID, MfgDate,PurchaseDate,...)) 

J'ai aussi essayé avec juste reportID au sein de l'article USING, mais je ne peux pas le faire ... Si vous avez essayé quelque chose comme cette part avec moi ..

Répondre

0

cela vous donnera l'ensemble des reportIDs existant dans les deux tables:

SELECT report_temp.reportID FROM report_temp, report WHERE report_temp.reportID=report.reportID 

Alors cela vous donnera les lignes à insérer:

SELECT * FROM report_temp WHERE reportID NOT IN (SELECT report_temp.reportID FROM report_temp, report WHERE report_temp.reportID=report.reportID) 

Puis déposez simplement que dans la table report:

INSERT INTO report SELECT * FROM report_temp WHERE reportID NOT IN (SELECT report_temp.reportID FROM report_temp, report WHERE report_temp.reportID=report.reportID) 
Questions connexes