簡體   English   中英

使用同一表的SubQuery更新

[英]Update with SubQuery from same table

是否可以使用同一表中的子查詢進行更新?

我收到此錯誤:

1093-您無法在FROM子句中指定目標表“任務”進行更新

update tasks SET completed_form = 'y' AND all_forms_in = 'y' where EID in (select EID from tasks WHERE completed_form = 'y' AND all_forms_in = 'n' group by EID having count(*) > 1);

UPDATE

我發現,如果將查詢包裝在另一個查詢中,它會起作用。 如此處所引用: MySQL錯誤1093-無法在FROM子句中指定目標表進行更新

update tasks SET all_forms_in = 'y' where EID in (SELECT * FROM (select EID from tasks WHERE completed_form = 'y' AND all_forms_in = 'n' group by EID having count(*) > 1)AS b);

MySQL在UPDATE語句中支持JOIN,因此您可以執行此操作而無需子查詢。 您必須按照完成的條件加入到兩個不同的行中,以模擬count(*)> 1。

UPDATE tasks AS t1
INNER JOIN tasks AS t2
  ON (t1.EID = t2.EID AND t2.completed_form = 'y' AND t2.all_forms_in = 'n')
INNER JOIN tasks AS t3
  ON (t1.EID = t3.EID AND t3.completed_form = 'y' AND t3.all_forms_in = 'n'
  AND t2.primary_key <> t3.primary_key)
SET t1.completed_form = 'y', 
    t1.all_forms_in = 'y';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM