Mysql 将列B更新为列A,但仅当表A为空时
我需要移动列名中的值 选项2 输入列名 选项1 但是仅在选项1为空的情况下。(图中的A点。) 如果选项_1不为空(图像中的点B),则不会发生任何事情,因为我不想覆盖现有值 此外,我想清除我们的选项2。但这一次的规则应该是,只有当选项2与选项1完全相同时,才清除选项2。这将确保它不会删除所有选项_2的值,这些值在数据库的更深处是有效的 结构如下: 数据库\u名称>>wp\u cart66\u产品 我研究并找到了命令: 更新'wp_cart66_products'集合'options_1'=“options_2”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
但这没有条件规则,也会传输和覆盖我不想要的有效值。这应该满足您的需要。请注意,在复制数据时,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:这将进入非原子操作。相反,我更新了答案以立即更新另一个字段。由于这些更新是在隐式事务中进行的,因此不可能将球落在更新上。