从不匹配的另一个表中的记录向表添加新记录.要匹配的 Cloumn 不是主键,而是 Varchar



我有两个表:

甘蔗包裹

FID | Acreage | CODE | DATE_PLANT
128-896   28.6     59   2008-08-01

甘蔗包裹更新

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

我没有收到任何新记录。

只需这样做:插入CaneParcelCaneParcel中不匹配的CaneParcelUpdates的值。

我修剪了日期字段并抓住了前 10 个字符以摆脱 hh:mm:ss

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); 

最新更新