[英]Update with SubQuery from same table
是否可以使用同一表中的子查询进行更新?
我收到此错误:
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);
我发现,如果将查询包装在另一个查询中,它会起作用。 如此处所引用: 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.