Здравствуйте. Подскажите, пожалуйста, как изменить значение в столбце если в тексте другого столбца присутствует значение выборки?
Есть запрос:
SELECT af_id,
SUM(COALESCE(amount_value,0))*0.1,
CONCAT('Бонус за: ', GROUP_CONCAT(o.uid ORDER BY o.uid ASC)),
'RUB'
FROM ( SELECT arur.af_id,
arur.r_w_uid,
@row_num := CASE WHEN @row_num_val = af_id
THEN @row_num+1
WHEN (@row_num_val := af_id) IS NOT NULL
THEN 1
END pair_flag,
@lag_r_w_uid := CASE WHEN (@row_num_val = af_id) AND @row_num mod 2 = 1
THEN r_w_uid
ELSE @lag_r_w_uid
END r_w_uid_1
FROM arur,
u_af,
( SELECT @row_num := null, @row_num_val := null, @lag_r_w_uid := null) AS x
WHERE u_af.id = arur.af_id
ORDER BY af_id, r_w_uid) t1
JOIN orders o ON (o.uid IN (t1.r_w_uid,t1.r_w_uid_1) AND o.status = 'Completed' AND o.used = '0')
WHERE pair_flag mod 2 = 0
GROUP BY af_id
HAVING COUNT(DISTINCT r_w_uid) = 4
В результате мы получаем запись в таблице вида:
`id`=2
`description` = 'Бонус за:
65,66,68,69,70,71,75,76' (цифры могут меняться)
`p_id` = 52
`amount` = 145000
и т.д.
Как на основании содержания столбца `description` изменить значение в столбце `used` другой таблицы.
Т.е. если в `description` есть цифра совпадающая с `uid`.`orders`, то в строке с совпадающим `uid` в столбце `used` изменить 0 на 1. Надеюсь понятно объяснил.
Если есть какой-то другой, отличающийся от моего, вариант решения, то я за любой, лишь бы работал.
Таблицы и запрос можно посмотреть по ссылке:
fiddle
Заранее спасибо.