我遇到麻烦了。代替启动脚本
UPDATE table_name SET field=value WHERE id=12345
我发射了
UPDATE table_name SET field=value
每天备份数据库(使用mysqldump)。使用备份还原该列的值的最简单方法是什么。显然,由于数据库不断变化,我无法直接应用该备份。
谢谢你!!
我将创建一个新表'table_name2',该表与您的'table_name'相同,但包含您的备份数据。
然后使用此查询:
UPDATE table_name SET
table_name.field = (SELECT table_name2.field
FROM table_name2
WHERE table_name.id = table_name2.id)
我将在另一个名为table_name_bck的表中恢复该表的备份,然后运行以下sql。
UPDATE table_name_bck tb, table_name t
SET t.field = tb.field
WHERE tb.id = t.id
当然,在防止环境恶化之前,请在测试环境中尝试一下。
来源:http://www.electrictoolbox.com/article/mysql/cross-table-update/
所以您清除了该列中的所有值,并希望将所有值放回正确的行中?
我建议将备份解压缩到单独的数据库中,然后执行类似的操作
UPDATE live_db.table_name live
INNER JOIN backup_db.table_name backup
ON live.id = backup.id
SET live.field = backup.field
[我也建议您复制您的实时网站,以便首先尝试;)
您可以尝试将备份加载到另一个数据库中,然后进行类似的操作(假设db1是生产db,而db2是临时数据库)
update db1.table set db1.field = db2.field where db1.id = db2.id