2016-01-19 131 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

是的,它的作品謝謝 –