sql - 根据 A 列更新表中所有行的 B 列
问题描述
我需要根据 a 列的值将哈希值插入 b 列,但我需要对表中的每一行执行此操作。
无论我尝试什么,我总是会收到此错误:
ERROR: more than one row returned by a subquery used as an expression
我一直在尝试以下不同版本:
UPDATE table
SET column b = md5((SELECT column a FROM table))
WHERE column a IS NOT NULL;
有关如何执行此操作的任何建议?
解决方案
这里不需要子查询。据我了解,您想存储column_a
in的校验和column_b
。正如人们所期望的那样,Postgres 的md5()
函数需要一个字符串数据类型的标量参数,因此:
UPDATE table
SET column_b = md5(column_a)
WHERE column_a IS NOT NULL;
请注意,使用计算列(在 Postgres 12 中可用)来存储此派生信息可能会更简单。
推荐阅读
- c# - c#中的指针char*应该传递什么参数?
- java - 如何从java中的扫描仪输入中拆分字符串
- java - 即使我更新了它正在检查的变量,我的程序仍继续运行相同的 if 语句
- python - 为什么我的时间序列数据框会限制我想在 LSTM 中使用的时间步数?
- asp.net - HTTP 错误 500.30 - 使用 app.UseStaticFiles 时 ANCM 进程内启动失败 asp.net.Core3.1
- python - Python - 从类中调用函数时出错
- fabricjs - 如何复制 IText 样式以获得明确的字符
- rust - 两个 NEAR 协议智能合约之间的交叉通信命名结构是如何确定的?
- mysql - 是否有更快的方法从表中选择记录并查询其子表
- mysql - 添加外键约束的规则