Добавить новые записи в таблицу из записей из другой таблицы, которые не совпадают. Cloumn, чтобы соответствовать, не являются первичным ключом и являются Varchar - PullRequest
0 голосов
/ 07 февраля 2020

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

CaneParcel

   FID | Acreage | CODE | DATE_PLANT

128-896   28.6     59   2008-08-01

И

CaneParcelUpdates

   FID  | Acreage | CODE   | DATE_PLANT
 128-896     28.6      59    01/04/2013 0h:00:00
 129-963     15.8      01    01/09/2011 0h:00:00
PRE-8596     12.3      14    31/10/2015 0h:00:00

Я хочу все новые записи, которые не находятся в первая таблица cp.

Я пробовал это, но не работает

If Not Exists(select * FROM CaneParcelUpdates cpu LEFT JOIN CaneParcel cp ON cpu.FIELD_ID = cp.FIELD_ID)
Begin
INSERT INTO CaneParcel (FIELD_ID,ACREAGE, BSI_CODE,DATE_PLANT)
SELECT FIELD_ID, ACREAGE,BSI_CODE,CONVERT(Date,DATE_PLANT) FROM CaneParcelUpdates;
End

Я не получаю никаких новых записей.

1 Ответ

0 голосов
/ 07 февраля 2020

Просто сделайте это: вставьте в CaneParcel значения CaneParcelUpdates, которые не совпадают в CaneParcel.

Я обрезал поле даты и схватил 10 первых символов, чтобы избавиться чч: мм: сс

INSERT INTO CaneParcel (FIELD_ID, ACREAGE, BSI_CODE, DATE_PLANT)
    SELECT 
        FIELD_ID, ACREAGE, BSI_CODE,
        CONVERT(Date,substring(DATE_PLANT,4,2) + '/' + left(DATE_PLANT, 2) + '/' + substring(DATE_PLANT,7,4))
    FROM 
        CaneParcelUpdates cpu
    WHERE
        NOT EXISTS (SELECT 1 FROM CaneParcel p 
                    WHERE cpu.FIELD_ID = cp.FIELD_ID); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...