我遇到了麻烦。而不是launchin脚本
UPDATE table_name SET field=value WHERE id=12345
我发起了
UPDATE table_name SET field=value
每天备份数据库(使用mysqldump)。使用备份还原该列值的最简单方法是什么?显然,我不能直接应用该备份,因为数据库会不断更改。
提前谢谢!!
答案 0 :(得分:5)
我会创建一个与'table_name'相同但又包含备份数据的新表'table_name2'。
然后使用此查询:
UPDATE table_name SET
table_name.field = (SELECT table_name2.field
FROM table_name2
WHERE table_name.id = table_name2.id)
答案 1 :(得分:2)
我会在另一个名为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/
答案 2 :(得分:1)
您可以尝试将备份加载到另一个数据库,然后进行类似的操作(假设db1是生产数据库,db2是临时数据库)
update db1.table set db1.field = db2.field where db1.id = db2.id
答案 3 :(得分:1)
所以你清除了列中的所有值,并希望将所有值放回正确的行中?
我建议将备份解压缩到一个单独的数据库并执行类似
的操作 UPDATE live_db.table_name live
INNER JOIN backup_db.table_name backup
ON live.id = backup.id
SET live.field = backuop.field
我还建议首先复制您的实际网站以尝试此操作;)