根据另一个表的列具有匹配的ID

时间:2019-04-09 21:41:57

标签: mysql sql database join

好的,所以我目前有两个表,它们具有对应的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://。

2 个答案:

答案 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.%'

要从登录名中删除其他内容。

它足够工作了!谢谢大家。