2016-01-19 92 views
2

我想根据条件从表中选择一些id并更新它们。不允许SQL更新查询

UPDATE user_feed 
    SET `status` = 'DELETED' 
    WHERE 
     id IN (
      SELECT 
       feed.id 
      FROM 
       user_activity act 
      JOIN user_feed feed ON act.id = feed.activity_id 
      WHERE 
       act.uid = 16 
      AND feed. STATUS = 'ACTIVE' 
     ) 

显示这个错误

[SQL] UPDATE user_feed设置status = '已删除' 其中id IN(选择从user_activity行为 feed.id加入上act.id = 饲料user_feed饲料。 ACTIVITY_ID其中act.uid = 16和feed.status = 'ACTIVE')

[ERR] 1093 - 不能指定目标表 'user_feed' 的更新在 FROM子句

+0

MySQL或MS SQL Server? (不要标记不涉及的产品...) – jarlh

+0

请解释你正在尝试做什么。 –

+0

也许'更新user_feed UF 上ua.id = uf.activity_id加入user_activity UA 组uf.status = '已删除' 其中 ua.uid = 16和uf.status = 'ACTIVE'' –

回答

1

在MySQL中,您可以在update语句中使用join。我认为这是你想要的:

UPDATE user_feed f join 
     user_activity a 
     on a.id = f.activity_id and a.uid = 16 
    set f.`status` = 'DELETED' 
    Where f.status = 'ACTIVE'; 
+0

未知列' F。状态'在'字段列表'有这个错误 –

+0

根据你的问题,'user_feed'有一个名为'status'的列。 –

+0

是的,它的作品谢谢 –