Вставить строки «report_temp», которых нет в «report»? - PullRequest
0 голосов
/ 09 июля 2010

У меня есть две таблицы:

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

В report таблица reportID является первичным ключом.

report_temp имеет такой же набор столбцов , что иreport, но без каких-либо ограничений.

Я должен insert the rows from report_temp to report, где reportID не тот же .Я написал как

  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,...))

Я также пытался использовать только reportID в USING предложении, но я не могу его получить ... Если вы попробовали что-то подобное, поделитесь со мной..

1 Ответ

0 голосов
/ 10 июля 2010

Это даст вам набор идентификаторов отчета, существующих в обеих таблицах:

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

Так что это даст вам строки для вставки:

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

Тогда просто поместите это в таблицу 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...