Обновите столбец одной таблицы, основываясь на столбце другой таблицы, где у них совпадают идентификаторы - PullRequest
0 голосов
/ 10 апреля 2019

Хорошо, поэтому у меня в настоящее время есть две таблицы, в которых они имеют соответствующие идентификаторы (это то, как мы узнаем, какой листинг принадлежит тому или иному пользователю, они имеют одинаковый идентификатор).По сути, я хочу обновить все имена пользователей (столбец «логин») одной таблицы (pmd_users) на основе URL веб-сайта (столбец «www») другой таблицы (pmd_listings), сопоставляя их на основе идентификаторов.За исключением случаев, когда http: // удалено.

Итак, таблица pmd_users имеет поле «id», а pmd_listings имеет «user_id».Нам нужно только обновить столбец «логин» в таблице «pmd_users».Я думал о том, чтобы сделать это, как показано ниже, за исключением того, что я не уверен, что это правильно, и я понятия не имею, как я могу удалить "http://" и" https://" из столбца сайта (www).

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" соответствовал столбцу pmd_listings таблицы "www", где совпадают их столбцы идентификаторов, кроме как без http: //.

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Я думаю, что вы можете сделать это с 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;
0 голосов
/ 10 апреля 2019

Ну, это не все в одном, если только кто-то не может помочь мне с этим, я могу достичь желаемого результата, используя два запроса следующим образом:

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

Чтобы удалить лишнее из логина.

Работает достаточно!Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...