sql - 从不匹配的另一个表的记录中将新记录添加到表中。要匹配的 Clumn 不是主键,而是 Varchar
问题描述
我有两张桌子:
甘蔗包裹
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
我没有得到任何新记录。
解决方案
只需这样做:插入在中不匹配的CaneParcel
值。CaneParcelUpdates
CaneParcel
我修剪了日期字段并抓住了前 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);
推荐阅读
- asn.1 - ASN.1 & 可选
- android - 如何在颤动的角落添加图像?
- objective-c - 为什么我的完成处理程序永远不会被调用?
- r - R Shiny验证列号输入文件
- php - 多个用户连接到具有不同数据库的服务器
- safari - 为 ios 设备的特定元素截屏 - safari 浏览器
- c# - 在锯齿状数组中,如何在顶部添加新元素,即在第一个位置并删除最后一个元素
- java - 为什么 Java 中的 LocaleServiceProvider 默认禁用 SPI?
- c# - 键入“?”时如何阻止 Resharper 删除 [CanBeNull] 在引用类型名称的末尾?
- php - 带有单引号的用户输入不适用于准备好的 sql