Вы можете использовать мульти-таблицу UPDATE
для получения желаемых результатов:
UPDATE table_b b
JOIN table_a a ON a.user_id = b.user_id AND a.score > 40
SET b.flag = 1
Условие JOIN
означает, что только строки в table_b
, где соответствующие user_id
in table_a
имеет score > 40
, для которого установлен флаг 1
. Если вы также хотите установить флаги на 0
, если соответствующий score <= 40
, вы можете использовать условие в качестве значения на SET
(поскольку MySQL трактует логические значения как 1
или 0
в цифре c context):
UPDATE table_b b
JOIN table_a a ON a.user_id = b.user_id
SET b.flag = a.score > 40
Для ваших примеров данных результат в table_b
такой же:
user_id flag
1 0
2 0
3 0
4 1
5 1
6 1
7 1
Демонстрация на dbfiddle