2016-12-28 6 views
1

の一部である必要があり、私はあるUPDATE文:エラー:ターゲット表が等価結合述語

2.表の列のようなターゲット表はの一部である必要があり、表1の列を更新しようとしたとき、私はこのエラーを取得します等号述語以下に示す

update test 
    set category = t1.category 
from category_type t1, test t2 
where t2.link ilike '%' || t1.type || '%' 
and t2.link ilike '%.nike.com/%'; 

Category_Type表:

type  category 
sandals  shoes 
boots  shoes 
t-shirts apparel 
-pants  apparel 

答えて

0

私は赤方偏移を知らないが、Postgresの中で、あなたはUPDATE文のFROM句でターゲット表を繰り返さないでください。

update test t2 
    set category = t1.category 
from category_type t1 --<< do NOT repeat the target table here 
where t2.link ilike '%' || t1.type || '%' 
    and t2.link ilike '%.nike.com/%'; 
0

のようなサブクエリに参加できるはずです。
update test set category = t1.category 
from (
    select c.category, t.link 
    from category_type c, test t 
    where t.link ilike '%' || c.type || '%' 
     and t.link ilike '%.nike.com/%'; 
) t1 
where test.link = t1.link 

AWS docsには、さらにページの下に結合の例があります。最後の例は、サブクエリの利点を示しています。

このクエリの基本的な形式は次のとおりです。

update target set val=t2.val 
from (
    select t.id, o.val 
    from target t 
    join other o on o.id=t.id 
) t2 
where target.id = t2.id 
+0

はどうもありがとうございました! – onlinetravel

+0

それを試してみてください。しかし、私はまだエラーが発生します:関係 "t1"は存在しません。 ( 選択c.categoryからカテゴリ= t1.category を設定更新TEMP、category_type cから温度tを をt.link t.link iLikeの '%' || c.type || '%' とT1 .link ilike '%.nike.com /%' )t1 ここで、temp.link = t1.link; – onlinetravel

+0

私はクラスターで実行できる例を試してみるつもりです。 – systemjack

関連する問題