Да, это возможно, но это немного громоздко. В основном это два LEFT JOINS
и несколько условных логик c:
UPDATE table1 t1
LEFT JOIN table2 t2 ON t2.id = t1.id
LEFT JOIN table3 t2 ON t3.id = t1.id
SET
t1.column2 = CASE WHEN t2.id IS NOT NULL THEN 1 ELSE t1.column2 END,
t1.column3 = CASE WHEN t3.id IS NOT NULL THEN 1 ELSE t1.column3 END
WHERE t2.id IS NOT NULL OR t3.id IS NOT NULL
Вы также можете использовать EXISTS
и соответствующие подзапросы:
UPDATE table1 t1
SET
t1.column2 = CASE
WHEN EXISTS(SELECT 1 FROM table2 t2 WHERE t2.id = t1.id)
THEN 1
ELSE t1.column2
END,
t1.column3 = CASE
WHEN EXISTS(SELECT 1 FROM table3 t3 WHERE t3.id = t1.id)
THEN 1
ELSE t1.column3
END
WHERE
EXISTS(SELECT 1 FROM table2 t2 WHERE t2.id = t1.id)
OR EXISTS(SELECT 1 FROM table3 t3 WHERE t3.id = t1.id)