Копирование из таблицы в таблицу с сопоставлением записей по ID

jekadog

Гуру форума
Регистрация
14 Дек 2012
Сообщения
170
Реакции
81
Приветствую всех!
Ребят помогите пожалуйста.. нужна помощь..
Есть одна БД, в ней есть 2 разных таблицы (tab_1 и tab_2), нужно с tab_1 копировать значения столбца 'PHONE_NUMBER' в tab_2 столбец 'WORK_PHONE'. При это всём копировать эти значения нужно сопоставляя пользователей по ID. Если есть запись в tab_1 и она имеет 'USER_ID' такой же как и в tab_2 'ID' то мы добавляем запись этому юзеру в tab_2 столбец 'WORK_PHONE'! Если в tab_1 отсутствует запись 'USER_ID' то в tab_2 столбец 'WORK_PHONE' ничего не пишем!
Помогите построить правильно запрос и перенести всё это..
За ранее благодарю!)

tab_1
Снимок экрана 2020-09-09 в 00.08.18.png

tab_2
Снимок экрана 2020-09-09 в 00.07.49.png
 
Самое простое, что приходит в голову - создай третью таблицу и дальше наполни её результатом SELECT в эти 2:
Для просмотра ссылки Войди или Зарегистрируйся

Хотя есть различные возможности построить UPDATE FROM SELECT и т.д.
 
Тупо скриптом сравнивать. Долго, но просто. LEFT JOIN tab_1 WHERE tab_1.ID <> tab_2.USER_ID и т.д.
 
А можете Помочь построить полную инъекцию?

Самое простое, что приходит в голову - создай третью таблицу и дальше наполни её результатом SELECT в эти 2:
Для просмотра ссылки Войди или Зарегистрируйся

Хотя есть различные возможности построить UPDATE FROM SELECT и т.д.
Третья таблица мне точно не нужна.. там записей около 12К, да и что мне делать с третей таблицей? Потом опять сравнивать со второй..

Тупо скриптом сравнивать. Долго, но просто. LEFT JOIN tab_1 WHERE tab_1.ID <> tab_2.USER_ID и т.д.
Очень не плохо, а можно по моему случаю сложить весь запросик этот?
 
Последнее редактирование:
UPDATE tab_2
SET WORK_PHONE = OT.PHONE_NUMBER
FROM (
SELECT ID, PHONE_NUMBER FROM tab_1 WHERE tab_1.ID = tab_2.USER_ID
) AS OT
WHERE
OT.ID = tab_2.USER_ID
 
Третья таблица мне точно не нужна.. там записей около 12К, да и что мне делать с третей таблицей? Потом опять сравнивать со второй..
В смысле? 3-я таблица = тот результат, что ты хочешь получить.
Выполняешь перенос данных, 2-ю таблицу удаляешь, 3-ю переименовываешь во 2-ю. Профит

12к записей - это ни о чём для БД сервера.
 
UPDATE tab_2
SET WORK_PHONE = OT.PHONE_NUMBER
FROM (
SELECT ID, PHONE_NUMBER FROM tab_1 WHERE tab_1.ID = tab_2.USER_ID
) AS OT
WHERE
OT.ID = tab_2.USER_ID
Query 1 ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM (
SELECT ID, PHONE_NUMBER FROM `b_user_phone_auth` WHERE b_user_phone_auth.' at line 3
ошибку пишет..(

В смысле? 3-я таблица = тот результат, что ты хочешь получить.
Выполняешь перенос данных, 2-ю таблицу удаляешь, 3-ю переименовываешь во 2-ю. Профит

12к записей - это ни о чём для БД сервера.
тут как бы соглашусь) но как это сделать то?..
 
Решено
 
Если решено - то будет здорово поделиться решением.
 
Назад
Сверху