在 netezza 中使用三个表进行更新

Posted

技术标签:

【中文标题】在 netezza 中使用三个表进行更新【英文标题】:Update using three tables in netezza 【发布时间】:2015-02-11 10:12:37 【问题描述】:

我试图避免一个共同相关的子查询,这反过来又使我从三个不同的表中更新,我不太确定如何使用 netezza 从三个表中进行更新。

update stemp
set maxi = a.marks
from stemp
left join
sd696 sd 
where st.id = sd.id
left join
(select id,MAX(marks) marks from sm696 group by ID) a 
where a.id = sd.id;

请帮帮我

【问题讨论】:

【参考方案1】:

当您需要在 UPDATE 中进行连接时,连接会在逗号分隔的 FROM 子句中隐式指定(无需再次指定 UPDATEd 表),并在 WHERE 子句中指定 JOIN 条件。

您的 UPDATE 看起来像这样:

UPDATE stemp
SET maxi = a.marks
FROM sd696 sd,
   (
      SELECT id,
         MAX(marks) marks
      FROM sm696
      GROUP BY ID
   )
   a
WHERE stemp.id = sd.id
AND a.id       = sd.id;

【讨论】:

以上是关于在 netezza 中使用三个表进行更新的主要内容,如果未能解决你的问题,请参考以下文章

存储过程中从一个表到另一个表的 Netezza 更新错误

Netezza 创建不在两个原始表中的记录表

查找 Netezza 服务器上的所有数据库名称

带有管道分隔文件的 Netezza 合并表

netezza 左外连接查询性能

SQL Server 传递表 Netezza