У меня есть две базы данных SQL. Один из них - старая резервная копия другой.Объединить определенный столбец таблицы из одной базы данных в другую
Я хотел бы объединить только 1 конкретную таблицу из [user_database0] в [user_database1], используя либо ssh, либо внутри phpMyAdmin.
Эта таблица, которую я хочу восстановить из резервной копии, называется [prefix_table].
Однако я не хочу восстанавливать все столбцы из этой таблицы [prefix_table], только столбец [комментарий].
Один из моих самых больших проблем является то, что некоторые строки из [prefix_table] были удалены, и я не хочу, чтобы восстановить эти удаленные строки из старой базы данных.
Ниже приведен пример:
* - Merge таблицы [prefix_table] из [user_database0]:
prefix_table
+---------------------------------------------------+
| id | name | comment | age | person_id |
+++++++++++++++++++++++++++++++++++++++++++++++++++++
| 1111 | name1 | old text 1 | 01 | 001 |
+------------+-------+------------+-----+-----------+
| 2222 | name2 | old text 2 | 02 | 002 |
+------------+-------+------------+-----+-----------+
| 3333 | name3 | old text 3 | 03 | 003 |
+------------+-------+------------+-----+-----------+
| 4444 | name4 | old text 4 | 04 | 004 |
+------------+-------+------------+-----+-----------+
* Таблица -в [prefix_table] в [user_database1]:
prefix_table
+-----------------------------------------------------+
| id | name | comment | age | person_id |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
| 1111 | namenew | new text 1 | 99 | 001 |
+------------+---------+------------+-----+-----------+
| 4444 | name4 | new text 4 | 04 | 004 |
+------------+---------+------------+-----+-----------+
| 5555 | name5 | text 1 | 05 | 005 |
+------------+---------+------------+-----+-----------+
| 6666 | name6 | text 2 | 06 | 006 |
+------------+---------+------------+-----+-----------+
* - Результирующего базы данных [user_database1]:
prefix_table
+-----------------------------------------------------+
| id | name | comment | age | person_id |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
| 1111 | namenew | old text 1 | 99 | 001 |
+------------+---------+------------+-----+-----------+
| 4444 | name4 | old text 4 | 04 | 004 |
+------------+---------+------------+-----+-----------+
| 5555 | name5 | text 1 | 05 | 005 |
+------------+---------+------------+-----+-----------+
| 6666 | name6 | text 2 | 06 | 006 |
+------------+---------+------------+-----+-----------+
Так что в принципе должно проверить, если таблица [prefix_table] матчи в обеих базах данных затем перезаписать данные в [комментарии] колонке. Обратите внимание, что если другие данные столбца меняются, он должен оставить его как есть, только обновить [комментарий].
В резюме (обе базы данных находятся на одном сервере в одном аккаунте PHPMYADMIN)
ОТ:.. [User_database0] [prefix_table] [содержание]
К: [user_database1]. [prefix_table]. [content]
IF: [id] соответствует столбцам в обеих таблицах.
Вот рабочая версия из приведенных ниже рекомендаций:
UPDATE
[new_db_name].[table_name]
INNER JOIN
[old_db_name].[table_name]
ON
[new_db_name].[table_name].[column name] = [old_db_name].[table_name].[column name]
SET
[new_db_name].[table_name].[matching column name] = [new_db_name].[table_name].[matching column name]
Что вы подразумеваете под слиянием - только обновить столбец 'comments', где ther - совпадение между обеими таблицами или также вставить отсутствующие строки из резервной копии? –
Извините, моя терминология может быть неправильной здесь, но я просто пытаюсь заменить данные столбца «комментарии» из старой базы данных, если встречается совпадение. Нет, чтобы вставить новые строки. В настоящее время тестируйте решение ниже, чтобы узнать, работает ли это. – Yevgen
Тогда нижеприведенный абат –