在 MySQL 中,当 col2 和 col3 的值不为 NULL 时,如何将 col1 的值设置为 col2 的值?
UPDATE t SET col1=col2 WHERE col2 IS NOT NULL AND col3 IS NOT NULL;
这行得通吗?
解决方案
1)使用事务
2)使用临时表
3) 在 sqlfiddle 测试简单案例
是的,这是完全合法的。将来尝试在 SQL Fiddle 中运行东西,http: //www.sqlfiddle.com/#!2/6fb42/1
好的,您正在管理一个数据库,但没有沙箱环境可以测试...... :(
创建数据库沙箱;
mysqldump realdb 表名 > dump.sql
mysql 沙箱 < dump.sql
瞧,你的沙盒环境可以玩了:)
编辑:
我刚刚看到你不能创建新的数据库。您是否考虑过临时表?
创建表时可以使用 TEMPORARY 关键字。TEMPORARY 表仅对当前连接可见,并在连接关闭时自动删除。这意味着两个不同的连接可以使用相同的临时表名称,而不会相互冲突或与现有的同名非临时表冲突。(在删除临时表之前,现有表是隐藏的。)要创建临时表,您必须具有 CREATE TEMPORARY TABLES 特权。
http://dev.mysql.com/doc/refman/5.1/en/create-table.html
编辑2:
我忘记了最简单的解决方案:(不要对 MYISAM 表执行此操作,只在 INNODB 上执行此操作!!!)禁用自动提交,尝试您想要的,做一些选择以检查这是否是您想要的,如果它不起作用,则简单地回滚。