当前位置: 首页 > 知识库问答 >
问题:

DB2使用join语句更新查询

贺桐
2023-03-14

我正在尝试更新d_wintel_healt表,下面是我正在使用的查询

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 

测试了运行良好的select查询,不确定问题是什么,在IBMDB2中是否有所不同。

共有1个答案

伊光赫
2023-03-14

改用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;
 类似资料:
  • 我正在尝试做一个更新查询,它将对5个用户的按购买日期排序求和。 表为: 这是我的表 更新查询应该以这样的方式工作,它将添加一个设置的数量到5个用户谁已经有了订阅在先。因此更新后的输出应该如下所示 因此,如您所见,这20只添加到那些首先订阅的ID中。 到目前为止我所尝试的是: 我一直得到以下错误。 的用法不正确 请协助。

  • 我试图在DB2 10.1 Windows上使用JDBC运行多语句查询,但由于语法错误而失败。以下是查询- 我知道这是由于数据库不理解查询结尾处的分号造成的。我如何设置查询分隔符为分号,这样就可以通过这个。

  • 问题内容: 我有这些表和值: 我想使用表1中的值及其各自的ID更新表2中的所有值。 有没有办法通过简单的SQL查询来做到这一点? 问题答案: 运行选择以确保它是您想要的 更新 另外,请考虑使用,以便在需要时可以将其回滚,但请在满意时再进行确认。

  • 我们有一个db2 database V9.7FP1 出现此错误消息的可能原因是什么?

  • 问题内容: 我有2个表格,Products和ShoppingCart,我想根据ShoppingCart中指定的产品名称和数量来更新和减少Products表中产品的“数量”。我怎样才能做到这一点? 表:产品字段:产品名称,产品数量 表:购物车字段:ProductName,ProductQty 访问数据库 问题答案: 您应该有一个产品ID。然而: 您还应该在字段和表名中删除空格。

  • 问题内容: 我需要在oracle表中更新新创建的列。为此,我需要使用行中的现有值来决定如何填充此列,但出现错误: 这是我的查询: 关于语法有什么建议吗? 问题答案: 您可以在子句中使用 CASE 表达式。 例如,