У меня есть таблица пользователей с таким адресом электронной почты, как:
johnsmith@gmail.com
Я пытаюсь обновить реферальные коды пользователей с помощью удобочитаемой записи.
Я буду устанавливать этот код для первой части их электронного письма (до символа @
) длиной не более 12 символов.
Если таких совпадений больше, чем ОДИН, например:
johnsmith@gmail.com
и johnsmith@aol.com
, тогда ко второму будет добавлено увеличение числа до конца.
Это должно привести к тому, что реферальные коды будут:
johnsmith
и johnsmith1
и т. Д.
Прямо сейчас, даже если их всего два, я получаю:
johnsmith1
и johnsmith2
.
В идеале, если есть только одна запись, не должно быть добавленного номера.
Как я могу это сделать?
Это то, что у меня сейчас есть:
UPDATE auth.user_referral_codes
SET referral_code = CONCAT((
SELECT LEFT(LEFT(email, STRPOS(email, '@') - 1), 12)
FROM auth.users
WHERE id = auth.user_referral_codes.user_id
) , (
SELECT row_number FROM (
SELECT row_number()
OVER (
PARTITION BY (SELECT LEFT(LEFT(email, STRPOS(email, '@') - 1), 12))
)
FROM auth.users
WHERE id = auth.user_referral_codes.user_id
) as row_number_subquery
));