作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
不确定这是否可行,但如果可以的话,我希望一步完成此操作。如果我的传入值与其他两个加密字段匹配,我想更新字段 3。这是我所拥有的不起作用的...
UPDATE tbl
SET field3=CONCAT(field3, 'some additional value')
WHERE field1 = ENCRYPTION_APPROACH('my_value_in_the_clear', ENCRYPTION_SETTINGS) AND
field2 = ENCRYPTION_APPROACH('my_other_value_in_the_clear', ENCRYPTION_SETTINGS);
字段 1 和 2 不是键,但以编程方式保证它们是唯一的。加密似乎有效,我可以使用相同的方法最初插入记录,然后再选择它。但是,当我使用经过验证的测试数据运行此命令时,我收到“0 rows受影响”,并且没有错误消息。
我可以进行复合调用,首先使用相同的方法选择记录,然后通过它的键更新它(适用于不同的调用)。但如果可以的话,我真的很想将这一点保持在一步。想法?
最佳答案
啊哈!
环顾四周后,我找到了真正的解决方案。每当您有 CONCAT 并且某些记录失败时,请使用这个小技巧......
UPDATE tbl
SET field3=IFNULL(CONCAT(field3, 'some additional value'), 'some additional value')
WHERE field1 = ENCRYPTION_APPROACH('my_value_in_the_clear', ENCRYPTION_SETTINGS) AND
field2 = ENCRYPTION_APPROACH('my_other_value_in_the_clear', ENCRYPTION_SETTINGS);
并不是加密失败...而是当 CONCAT 第一次作用于空字段时,它返回了空值。这个小技巧可以让您在第一次尝试连接前一个值时通过,并适用于所有后续调用!
关于MySQL 如何使用 WHERE 中的两个加密字段更新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52049196/
我是一名优秀的程序员,十分优秀!