我正在尝试使用收集的数据填充表格。
我有三个表,INCIDENT_MAIN,INCIDENT_REPORT和PROJECT_PROFILE。
我必须从INCIDENT_MAIN和INCIDENT_REPORT提供的数据中填写PROJECT_PROFILE表。
这是我做INNER JOIN的查询
INSERT INTO PROJECT_PROFILE (INCIDENT_REPORT_ID, PROJECT_NAME,PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE,PROJECT_END_DATE,DOMESTIC_INTERNATIONAL,PROJECT_FACILITIES_LOGISTIC)
SELECT PROJECT_NAME, PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE, ESTIMATED_PROJECT_END_DATE, DOMESTIC_INTERNATIONAL, PROJECT_FACILITIES_LOGISTIC
FROM INCIDENT_MAIN INCIDENT_REPORT_ID
INNER JOIN INCIDENT_REPORT ON INCIDENT_REPORT.INCIDENT_REPORT_ID = PROJECT_PROFILE.INCIDENT_REPORT_ID
我收到多部分标识符'PROJECT_PROFILE.INCIDENT_REPORT_ID'的错误信息不能被绑定
所以我决定首先使用INCIDENT_REPORT_ID填充PROJECT_PROFILE表,以便我可以从INCIDENT_REPORT表中收集INCIDENT_REPORT_ID的数据。 PROJECT_PROFILE_ID是自动增量,因为我将其设置为IDENTITY KEY。
数据插入就好了。结果如下。
234行受影响。
现在,我尝试用INCIDENT_MAIN中的数据替换NULL值
这是查询
INSERT INTO PROJECT_PROFILE (PROJECT_NAME,PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE,PROJECT_END_DATE,DOMESTIC_INTERNATIONAL,PROJECT_FACILITIES_LOGISTIC)
SELECT PROJECT_NAME, PROJECT_TYPE, PROJECT_PHASE, PROJECT_START_DATE, ESTIMATED_PROJECT_END_DATE, DOMESTIC_INTERNATIONAL, PROJECT_FACILITIES_LOGISTIC
FROM INCIDENT_MAIN
WHERE PROJECT_PROFILE_ID >='1'
但是现在,数据形式INCIDENT_MAIN被插入234的最后一行,这使得PROJECT_PROFILE_ID增加并且NULL VALUES不被替换。
执行查询的正确方法是什么,以便可以用实际数据替换NULL值,并且PROJECT_PROFILE_ID中没有增量。
EDITED
所以,我按照建议尝试了这个更新查询
UPDATE PROJECT_PROFILE
SET PROJECT_PROFILE.PROJECT_NAME = INCIDENT_MAIN.PROJECT_NAME,
PROJECT_PROFILE.PROJECT_PHASE = INCIDENT_MAIN.PROJECT_PHASE,
PROJECT_PROFILE.PROJECT_START_DATE = INCIDENT_MAIN.PROJECT_START_DATE,
PROJECT_PROFILE.PROJECT_END_DATE = INCIDENT_MAIN.ESTIMATED_PROJECT_END_DATE,
PROJECT_PROFILE.DOMESTIC_INTERNATIONAL = INCIDENT_MAIN.DOMESTIC_INTERNATIONAL,
PROJECT_PROFILE.PROJECT_FACILITY_LOGISTIC = INCIDENT_MAIN.PROJECT_FACILITIES_LOGISTIC
FROM PROJECT_PROFILE JOIN INCIDENT_MAIN ON
PROJECT_PROFILE.PROJECT_NAME= INCIDENT_MAIN.PROJECT_NAME
WHERE PROJECT_PROFILE.PROJECT_PROFILE_ID <='234'
得到(0行受影响)
不知道你的表架构,我只是在猜...
我已将JOIN
条件更改为INCIDENT_REPORT.INCIDENT_REPORT_ID = INCIDENT_MAIN.INCIDENT_REPORT_ID
。如果列名错误,请相应修改
INSERT INTO PROJECT_PROFILE
(
-- INCIDENT_REPORT_ID, remove this line
PROJECT_NAME,
PROJECT_TYPE,
PROJECT_PHASE,
PROJECT_START_DATE,
PROJECT_END_DATE,
DOMESTIC_INTERNATIONAL,
PROJECT_FACILITIES_LOGISTIC
)
SELECT PROJECT_NAME,
PROJECT_TYPE,
PROJECT_PHASE,
PROJECT_START_DATE,
ESTIMATED_PROJECT_END_DATE,
DOMESTIC_INTERNATIONAL,
PROJECT_FACILITIES_LOGISTIC
FROM INCIDENT_MAIN INCIDENT_REPORT_ID
INNER JOIN INCIDENT_REPORT
ON INCIDENT_REPORT.INCIDENT_REPORT_ID = INCIDENT_MAIN.INCIDENT_REPORT_ID
我的建议是,不要插入表中。首先执行查询,从SEELCT
到结束。确保结果符合您的要求。然后添加INSERT
语句。