当我尝试更新表1的列时,我遇到此错误,就像表2中的列一样。
目标表必须是equijoin谓词的一部分。
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 :(得分:0)
我不知道Redshift,但是在Postgres中,你不能在FROM
语句的UPDATE
子句中重复目标表:
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/%';
答案 1 :(得分: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