【发布时间】:2018-08-29 14:46:15
【问题描述】:
我有一个包含电子邮件的用户表,例如:
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
));
【问题讨论】:
标签: sql postgresql window-functions