Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将列B更新为列A,但仅当表A为空时_Mysql - Fatal编程技术网

Mysql 将列B更新为列A,但仅当表A为空时

Mysql 将列B更新为列A,但仅当表A为空时,mysql,Mysql,我需要移动列名中的值 选项2 输入列名 选项1 但是仅在选项1为空的情况下。(图中的A点。) 如果选项_1不为空(图像中的点B),则不会发生任何事情,因为我不想覆盖现有值 此外,我想清除我们的选项2。但这一次的规则应该是,只有当选项2与选项1完全相同时,才清除选项2。这将确保它不会删除所有选项_2的值,这些值在数据库的更深处是有效的 结构如下: 数据库\u名称>>wp\u cart66\u产品 我研究并找到了命令: 更新'wp_cart66_products'集合'options_1'=“op

我需要移动列名中的值

选项2

输入列名

选项1

但是仅在选项1为空的情况下。(图中的A点。) 如果选项_1不为空(图像中的点B),则不会发生任何事情,因为我不想覆盖现有值

此外,我想清除我们的选项2。但这一次的规则应该是,只有当选项2与选项1完全相同时,才清除选项2。这将确保它不会删除所有选项_2的值,这些值在数据库的更深处是有效的

结构如下:

数据库\u名称>>wp\u cart66\u产品

我研究并找到了命令:

更新'wp_cart66_products'集合'options_1'=“options_2”


但这没有条件规则,也会传输和覆盖我不想要的有效值。

这应该满足您的需要。请注意,在复制数据时,is将继续并清除
选项2
,因为在这种情况下,如果选项2保持不变,选项1和2将是相等的

update wp_cart66_products
set options_1 = options_2,
    options_2 = ''
where options_1 IS NULL or options_1 = ''
UPDATE `wp_cart66_products`
SET
    `options_1` = `options_2`,
    `options_2` = ''
WHERE
    `options_1` = ''
    OR `options_1` IS NULL
这会处理图片A区中的所有箱子,但不会触及B区中的物品。这听起来像是你想要的

然后,您可以运行第二个类似这样的查询来处理选项1和选项2从一开始就匹配的情况,并且您希望清除选项2

UPDATE `wp_cart66_products`
SET `options_2` = ''
WHERE `options_1` = `options_2`
运行这两个查询后,字段元组只有两种不同的情况:

  • options_1
    为非零长度字符串,
    options_2
    为空字符串
  • options_1
    options_2
    是长度非零的非匹配字符串

之后可能会有第二次更新
。。。设置options_2=null,其中options_1=options_2
以满足问题的第二部分?@wwkudu:这将进入非原子操作。相反,我更新了答案以立即更新另一个字段。由于这些更新是在隐式事务中进行的,因此不可能将球落在更新上。