使用LEFT JOIN和GROUP BY进行MySQL更新作业

时间:2013-01-22 04:23:18

标签: mysql

有没有办法根据左连接和分组的结果更新值?

我希望能够将当前作业的类别更新为可见,我尝试下面但是它不起作用

UPDATE category c 
            LEFT JOIN portfolio_job_category pjc
            ON pjc.category_id = c.id
            LEFT JOIN job j
            ON j.id = pjc.job_id
            SET c.visible = 0
            WHERE (c.visible = 0 
            OR c.visible IS NULL)
            AND j.end_date > CURRENT_DATE
            GROUP BY cat_id

1 个答案:

答案 0 :(得分:0)

GROUP BY不是UPDATE语句(link)的语法的一部分。 GROUP BY作为更新的一部分并没有多大意义,因为没有涉及聚合函数。如果您的目标只是更新与尚未结束的作业相关联的所有类别,您应该只使用您拥有的联接来完成此任务。

此外,c.visible = 0子句中析取的WHERE部分似乎是多余的。如果已经为0,则无需将可见性设置为0.