我需要为我的应用程序创建一个cron脚本,它将更新任务的状态,所有表演者都已完成特定任务的工作。
UPDATE `tasks`
SET status_id = 4
WHERE `id` IN (SELECT `task_id` FROM `task_user` WHERE __ALL PERFORMERS OF TASK HAVE STATE_ID = 2__)
“表演者”的role_id
= 2且state_id
从1(任务未完成)到2(任务完成工作)不等
请,帮助
答案 0 :(得分:1)
您可以使用聚合和having
子句来获取所需的ID:
UPDATE `tasks`
SET status_id = 4
WHERE `id` IN (SELECT `task_id`
FROM `task_user`
GROUP BY task_id
HAVING SUM(STATE_ID = 2) = COUNT(*)
);
表达式SUM(STATE_ID = 2)
计算状态为“2”的每个task_user
的{{1}}行数。 task_id
说“所有人都有这种状态。”
编辑:
包括= COUNT(*)
:
role_id