0

左結合とgroupbyの結果に基づいて値を更新する方法はありますか?

現在のジョブでカテゴリを表示できるように更新したいのですが、以下を試してみましたが、機能しません

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
4

1 に答える 1

0

GROUP BYUPDATEステートメントの文法の一部ではありません(リンク)。GROUP BY集約関数が含まれていないため、更新の一部としてはあまり意味がありません。まだ終了していないジョブに関連付けられているすべてのカテゴリを更新することが目的の場合は、結合だけでこれを実行できるはずです。

また、条項c.visible = 0の論理和の部分は冗長に見えます。WHEREすでに0になっている場合は、visibleを0に設定する必要はありません。

于 2013-01-22T04:31:02.693 に答える