2017-02-18 8 views
0

誰でもこの1つのクエリを動作させるのを助けてください。 I私は、「ORA-01779を取得しています。ここ内部結合を使用してクエリを更新する際の問題

他のテーブルに結合されたテーブルの列のステータスを更新しようとしているが、クエリ

update 
(select I.account_id, I.sts, I.name_id, CI.CRM_TYPE, I.comments 
    from PPInters I 
     inner join DW.CUST CT 
     on I.account_id = CT.account_id 
     where 
      I.sts is null 
      AND I.comments IS NOT NULL 
      AND CT.CUSTTYPe = 'INTNL') T 

SET T.STS = 'D' 

WHERE T.account_id IN (2000208927,380166014,190180447,166078041,105029075 ) 

です午前:非キーにマップする列を変更することはできません-preservedテーブル」エラー私はここでやろうとしています何

は、いくつかの700レコードのにセットI.STSの= 『D』は、このクエリに

select I.account_id, I.sts, I.name_id, CI.CRM_TYPE, I.comments 
      from PPInters I 
       inner join DW.CUST CT 
       on I.account_id = CT.account_id 
       where 
        I.sts is null 
        AND I.comments IS NOT NULL 
        AND CT.CUSTTYPe = 'INTNL' 
を使用してプルアップされていますそれが価値ださ

私はaccount_idがテーブルPPIntersの主キーkolumnであることをAssumming

+0

で 'CI'テーブルの別名は何ですかあなたの 'select'節? – mathguy

答えて

1

それを感謝し、
が一意に、このテーブル内のレコードを識別します。

UPDATE PPInters 
SET STS = 'D' 
WHERE account_id IN (

      select I.account_id 
       /*, I.sts, I.name_id, CI.CRM_TYPE, I.comments */ 
      from PPInters I 
       inner join DW.CUST CT 
       on I.account_id = CT.account_id 
       where 
        I.sts is null 
        AND I.comments IS NOT NULL 
        AND CT.CUSTTYPe = 'INTNL' 

) 
AND account_id IN (2000208927,380166014,190180447,166078041,105029075 ) 
+0

これは動作します - ありがとうございます –

関連する問題