如果与table2的关系存在,则将table1中的标志设置为true

时间:2016-01-26 20:59:16

标签: mysql

我想这是一个明智的选择,但不知怎的,我现在无法管理它。

基本上我有一个桌面专辑和一个桌面艺术家,我想更新艺术家' is_composeris_interpreter标记基于是否存在与专辑的适当字段的关系。 (摆弄演示模式:http://sqlfiddle.com/#!9/129a9

我尝试使用选择了id的子查询进行更新,但这似乎非常慢。然后我尝试通过使用连接,分组依据和拥有,但至少在执行更新语句时group by不可用。

如果有人能指出我正确的方向,那就太好了!

1 个答案:

答案 0 :(得分:2)

UPDATELEFT JOIN

一起使用
UPDATE artists AS a
LEFT JOIN albums AS ai ON ai.interpreter = a.id
LEFT JOIN albums AS ac ON ac.composer = a.id
SET a.is_interpreter = ai.id IS NOT NULL,
    a.is_composer = ac.id IS NOT NULL

DEMO