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

jekadog

Гуру форума
Регистрация
14 Дек 2012
Сообщения
168
Реакции
75
Приветствую всех!
Ребят помогите пожалуйста.. нужна помощь..
Есть одна БД, в ней есть 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
 

Горбушка

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

Хотя есть различные возможности построить UPDATE FROM SELECT и т.д.
 

steelfeet

Создатель
Регистрация
3 Июн 2019
Сообщения
24
Реакции
14
Тупо скриптом сравнивать. Долго, но просто. LEFT JOIN tab_1 WHERE tab_1.ID <> tab_2.USER_ID и т.д.
 

jekadog

Гуру форума
Регистрация
14 Дек 2012
Сообщения
168
Реакции
75
А можете Помочь построить полную инъекцию?

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

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

Тупо скриптом сравнивать. Долго, но просто. LEFT JOIN tab_1 WHERE tab_1.ID <> tab_2.USER_ID и т.д.
Очень не плохо, а можно по моему случаю сложить весь запросик этот?
 
Последнее редактирование:

steelfeet

Создатель
Регистрация
3 Июн 2019
Сообщения
24
Реакции
14
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
 

Горбушка

Ищу её...
Регистрация
2 Май 2008
Сообщения
3.444
Реакции
2.523
Третья таблица мне точно не нужна.. там записей около 12К, да и что мне делать с третей таблицей? Потом опять сравнивать со второй..
В смысле? 3-я таблица = тот результат, что ты хочешь получить.
Выполняешь перенос данных, 2-ю таблицу удаляешь, 3-ю переименовываешь во 2-ю. Профит

12к записей - это ни о чём для БД сервера.
 

jekadog

Гуру форума
Регистрация
14 Дек 2012
Сообщения
168
Реакции
75
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к записей - это ни о чём для БД сервера.
тут как бы соглашусь) но как это сделать то?..
 

jekadog

Гуру форума
Регистрация
14 Дек 2012
Сообщения
168
Реакции
75
Решено
 

flaer

Постоялец
Регистрация
21 Янв 2008
Сообщения
50
Реакции
11
Если решено - то будет здорово поделиться решением.
 
Сверху