带有连接语句的 DB2 更新查询
DB2 update query with join statement
我正在尝试更新 D_WINTEL_HEALTH
table 以下是我正在使用的查询
UPDATE D_WINTEL_HEALTH A
SET A.HEALTH = 7
FROM D_WINTEL_HEALTH A JOIN D_REPORTER_STATUS B ON A.HOST = B.HOST
WHERE B.ALERTKEY = 'kph_netport_xlzc_ilo' AND
B.SEVERITY = 0 AND
A.HEALTH <> 0
我还尝试了另一个查询:
UPDATE D_WINTEL_HEALTH A SET A.HEALTH = 7
FROM (Select D_WINTEL_HEALTH A JOIN D_REPORTER_STATUS B
ON lower(A.HOST) = lower(B.HOST)) s
WHERE s.ALERTKEY = 'kph_netport_xlzc_ilo' AND s.SEVERITY = 0 AND s.HEALTH <> 0
但是他们俩return都在下面的错误:
[UPDATE - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601]
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=FROM;A SET
A.HEALTH = 7 ;LEFT_BRACKET, DRIVER=4.15.82
测试了工作正常的 select 查询,不确定是什么问题,在 IBM DB2 中是否不同。
试试下面的查询。
merge into AD_WINTEL_HEALTH A
using (select SEVERITY, ALERTKEY from D_REPORTER_STATUS) b
ON A.HOST = B.HOST
when matched and B.ALERTKEY = 'kph_netport_xlzc_ilo' and B.SEVERITY = 0 and A.HEALTH <> 0
then update SET A.HEALTH = 7
改用 MERGE 语句。
MERGE INTO D_WINTEL_HEALTH A
USING D_REPORTER_STATUS B ON A.HOST = B.HOST
AND B.ALERTKEY = 'kph_netport_xlzc_ilo'
AND B.SEVERITY = 0 AND A.HEALTH <> 0
WHEN MATCHED THEN UPDATE SET HEALTH = 7;
我正在尝试更新 D_WINTEL_HEALTH
table 以下是我正在使用的查询
UPDATE D_WINTEL_HEALTH A
SET A.HEALTH = 7
FROM D_WINTEL_HEALTH A JOIN D_REPORTER_STATUS B ON A.HOST = B.HOST
WHERE B.ALERTKEY = 'kph_netport_xlzc_ilo' AND
B.SEVERITY = 0 AND
A.HEALTH <> 0
我还尝试了另一个查询:
UPDATE D_WINTEL_HEALTH A SET A.HEALTH = 7
FROM (Select D_WINTEL_HEALTH A JOIN D_REPORTER_STATUS B
ON lower(A.HOST) = lower(B.HOST)) s
WHERE s.ALERTKEY = 'kph_netport_xlzc_ilo' AND s.SEVERITY = 0 AND s.HEALTH <> 0
但是他们俩return都在下面的错误:
[UPDATE - 0 row(s), 0.000 secs] [Error Code: -104, SQL State: 42601] DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=FROM;A SET A.HEALTH = 7 ;LEFT_BRACKET, DRIVER=4.15.82
测试了工作正常的 select 查询,不确定是什么问题,在 IBM DB2 中是否不同。
试试下面的查询。
merge into AD_WINTEL_HEALTH A
using (select SEVERITY, ALERTKEY from D_REPORTER_STATUS) b
ON A.HOST = B.HOST
when matched and B.ALERTKEY = 'kph_netport_xlzc_ilo' and B.SEVERITY = 0 and A.HEALTH <> 0
then update SET A.HEALTH = 7
改用 MERGE 语句。
MERGE INTO D_WINTEL_HEALTH A
USING D_REPORTER_STATUS B ON A.HOST = B.HOST
AND B.ALERTKEY = 'kph_netport_xlzc_ilo'
AND B.SEVERITY = 0 AND A.HEALTH <> 0
WHEN MATCHED THEN UPDATE SET HEALTH = 7;