2016-07-15 76 views
0

我有一個交易員(TRADERS)和他們的主管的表。 (監事是自己必須爲貿易商新的監事(NEWSUPERVISORS)另一個表在子表上加入UPDATE查詢

TRADERS - traderid,名監督員, NEWSUPERVISORS - traderid,監事

我需要更新貿易商表與新主管監事。

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

此查詢不工作,請你可以建議什麼是錯的這個查詢。

+3

您使用的RDBMS是什麼?無法在許多平臺的「UPDATE」語句中使用聯接。另外,當你說它不起作用時,它以什麼方式不起作用?你有錯誤信息嗎? – ninesided

+0

我正在使用postgresql。我得到的錯誤是「交易者」關係的列「e」不存在。當我嘗試@Pirate的查詢時,我也遇到同樣的錯誤 – megan

回答

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 
      ); 
0

一些SQL查詢,根本就不是「更新」。如果將t o採取另一種方法,例如使用運行一個查詢的存儲過程來獲取需要更新的trader_id,然後可能在TRANSACTION中依次循環該結果集,針對每個trader_id發出單獨的update查詢。

+0

SQL查詢根本無法更新_by definition_。 – onedaywhen

+0

不一定如此。在Microsoft Access中,您*可以*創建「可更新記錄集」。但僅限於某些類型的查詢。但是,這顯然是爲了方便特定產品和自己的SQL引擎而完成的一個邊緣案例。 –

+0

[查看更新一直是關係世界感興趣的主題](https://books.google.co.uk/books?id=RXW4PtS4bEYC)。但是*查詢數據庫和更新數據庫是完全不同的操作。當然,術語'附加查詢','更新查詢'和'刪除查詢'可以在MS Access文檔中找到,但它們仍然是oyxmorons!在我的書中,MS Access沒有資格作爲SQL產品,因爲它不符合SQL-92入門級標準,因此不能用於證據:) – onedaywhen