我有两个表 - 一个包含作业数据,另一个包含地址数据。
address_data(D)如下:
| LotNumber | PlanNumber | StreetNumber | (其他信息不相关)|
jobs_data(J):*对于其中许多条目,仅给出批次+计划编号
| LotNumber | PlanNumber | StreetNumber | (其他信息)|
我希望通过加入来填充J.StreetNumber和D.StreetNumber字段 J.LotNumber = D.LotNumber和J.PlanNumber = D.PlanNumber
我的第一次尝试:
INSERT INTO Jobs_Data (StreetNumber)
SELECT D.StreetNumber
FROM Address_Data D
JOIN Jobs_Data J ON J.LotNumber::varchar = D.LotNumber::varchar
JOIN Address_Data DA ON J.PlanNumber::varchar = DA.PlanNumber::varchar
WHERE J.StreetNumber IS NULL ;
在Jobs_Data(J)表中,我的第一次尝试为地址数据(D)的每一行添加了一个空白的额外行,并仅填写街道编号列。在表格中,我的工作数据保持不变,同样缺少街道号码。
另外我觉得NULL可能与我的空白StreetNumber列只是空白(没有空格)不一样?
我希望一些SQL大师可以为我解决这个问题!
答案 0 :(得分:0)
另外我觉得NULL可能与我的空白StreetNumber列只是空白(没有空格)不一样?
如果连接工作(简化之后)与任何数据类型一起工作,那么为了解决上述问题,你必须修复where子句,如下所示:
INSERT INTO Jobs_Data (StreetNumber)
SELECT D.StreetNumber
FROM Address_Data D
JOIN Jobs_Data J ON J.LotNumber=D.LotNumber and J.PlanNumber=D.PlanNumber
WHERE trim(J.StreetNumber) IS NULL and trim(D.StreetNumber) IS NOT NULL;
答案 1 :(得分:0)
感谢您的帮助,非常感谢。我找到了解决方案,这比我预期的简单,并且不需要'INSERT INTO'或'JOIN'语句:
UPDATE Jobs_Data
SET StreetNumber = D.StreetNumber
FROM Address_Data D
WHERE Jobs_Data.PlanNumber = D.PlanNumber
AND Jobs_Data.LotNumber = D.LotNumber
AND Jobs_Data.StreetNumber IS NULL ;