我有两个SQL数据库。一个是另一个的较旧备份。
我想使用ssh或phpMyAdmin内部将[user_database0]中的一个特定表合并到[user_database1]。
我想从备份恢复的表称为[prefix_table]。
但是,我不想从该表[prefix_table]中恢复所有列,只需要还原[comment]列。
我最关心的一个问题是[prefix_table]中的某些行已被删除,我不想从旧数据库中恢复这些已删除的行。
以下是一个示例:
* - 来自 [user_database0] 的合并表[prefix_table]:
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 |
+------------+-------+------------+-----+-----------+
* - 进入 [user_database1] 中的表[prefix_table]:
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]是否匹配,然后覆盖[comment]列中的数据。请注意,如果其他列数据发生更改,则应保持原样,只应更新[注释]。
摘要(两个数据库位于一个phpMyAdmin帐户中的同一台服务器上)
FROM:[user_database0]。[prefix_table]。[content]
TO:[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]
答案 0 :(得分:1)
以下内容有效。在这里,它正在使用旧评论更新新评论,以及两者中的任何匹配ID。
编辑:这应该指向正确的方向。我之前有过你的架构,我误解了你写的东西 - 我的坏。
UPDATE [new_table_name] SET comment = [old_table_name].onecomment
FROM [new_table_name]
INNER JOIN [old_table_name] ON [new_table_name].aboutme_id = [old_table_name].aboutme_id
注意:上面的语法是SQL Server,因为该问题最初被错误地标记为sql-server。