在子表上使用join进行UPDATE查询

时间:2016-07-15 13:29:52

标签: sql postgresql join

我和交易员(TRADERS)及其主管有一张桌子。 (监管者本身就是另一张为交易员提供新监管人(NEWSUPERVISORS)的表。

TRADERS - traderid,名称主管, NEWSUPERVISORS - traderid,主管

我需要为新主管更新主管的TRADERS表。

update traders set e.supervisor = n.supervisor from traders join 
(select traderid, supervisor from new_supervisor n) on e.traderid= n.traderid

此查询不起作用。请问您能否告知此查询有什么问题。

2 个答案:

答案 0 :(得分:0)

有些SQL查询根本无法更新。"您必须采用替代方法,例如使用运行一个查询的存储过程来获取需要更新的trader_id,然后,可能在TRANSACTION中循环此结果集依次针对每个update发出个别trader_id个问题。

答案 1 :(得分:0)

这是标准SQL:

update traders
   set supervisor = (
                     select n.supervisor
                       from new_supervisor n
                      where traders.traderid = n.traderid
                    )
 where exists (
               select *
                 from new_supervisor n
                where traders.traderid = n.traderid
              );