mysql - 将特定表列从一个数据库合并到另一个数据库

标签 mysql sql phpmyadmin

我有两个 SQL 数据库。一个是另一个的旧备份。

我只想使用 ssh 或在 phpMyAdmin 内部将 [user_database0] 中的 1 个特定表合并到 [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] 列中的数据。请注意,如果其他列数据发生变化,它应该保持原样,只有 [comment] 应该更新。


总结(两个数据库都在一个 phpMyAdmin 帐户的同一台服务器上)

来自:[user_database0].[prefix_table].[内容]

收件人:[user_database1].[prefix_table].[content]

如果:[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]

最佳答案

以下将起作用。在这里,它使用旧评论更新新评论以匹配两者中的任何匹配 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,因为问题最初被错误地标记为 .

关于mysql - 将特定表列从一个数据库合并到另一个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168743/

相关文章:

mysql - SQL从一个表中获取所有列以及来自另一个由外键关联的表中的分组列的计数

mysql - 再次mysql "count distinct"

php - 警告 : mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql - Chef 认为没有满足依赖关系

Java - 无法从 MySQL StoredProcedure 返回/访问结果集

mysql - 确定我可以用我的食材 cooking 的食谱的优雅方式

sql - Grails 处理来自 sql 数据库的信息

sql - 使用 PIVOT 将数据从宽翻转到高

php - SQL 替换不适用于 phpMyAdmin?

php - 如何设置phpmyadmin的用户名和密码