好的,所以我目前有两个表,它们具有对应的ID(这就是我们知道哪个列表属于哪个用户,它们具有相同的ID)的原因。基本上,我想根据另一个表(pmd_listings)的网站URL(列“ www”)更新一个表(pmd_users)的所有用户名(“ login”列),并根据ID进行匹配。除了,删除了http://。
因此,表pmd_users的字段为“ id”,而pmd_listings的字段为“ user_id”。我们只需要更新表“ pmd_users”中的“登录”列。我一直在想像下面那样做,除非我不确定那是正确的,而且我不知道如何从网站(www)栏中删除“ http://”和“ https://”。
UPDATE pmd_users
INNER JOIN pmd_listings
ON pmd_listings.user_id = pmd_users.id
SET pmd_users.login = pmd_listings.www
有什么建议吗?
TL; DR 我希望表pmd_users列“ login”与它们的ID列匹配的表pmd_listings列“ www”相匹配,除非没有http://。
答案 0 :(得分:0)
我认为您可以使用substr()
和case
来做到这一点。
UPDATE pmd_users INNER JOIN pmd_listings
ON pmd_listings.user_id=pmd_users.id
SET pmd_users.login = CASE
WHEN substr(pmd_listings.www, 1,7) = 'http://'
THEN substr(pmd_listings.www, 8)
WHEN substr(pmd_listings.www, 1,8) = 'https://'
THEN substr(pmd_listings.www, 9)
ELSE pmd_users.login
END;
答案 1 :(得分:0)
好吧,这不是一成不变的,除非有人可以帮助我,我可以使用以下两个查询来达到我想要的结果:
UPDATE pmd_users
INNER JOIN pmd_listings
ON pmd_listings.user_id = pmd_users.id AND pmd_listings.www != ""
SET pmd_users.login = pmd_listings.www
*添加了删除空列的添加项,然后使用完成:
UPDATE pmd_users
SET login = REPLACE(login, 'http://www', '')
WHERE login LIKE 'http://www.%'
要从登录名中删除其他内容。
它足够工作了!谢谢大家。