-2

在 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 测试简单案例

4

2 回答 2

2

是的,这是完全合法的。将来尝试在 SQL Fiddle 中运行东西,http: //www.sqlfiddle.com/#!2/6fb42/1

于 2012-06-27T01:46:34.230 回答
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 上执行此操作!!!)禁用自动提交,尝试您想要的,做一些选择以检查这是否是您想要的,如果它不起作用,则简单地回滚。

于 2012-06-27T01:50:02.610 回答