首页 > 解决方案 > 根据 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;

有关如何执行此操作的任何建议?

标签: sqlpostgresqlsql-updatesubquery

解决方案


这里不需要子查询。据我了解,您想存储column_ain的校验和column_b。正如人们所期望的那样,Postgres 的md5()函数需要一个字符串数据类型的标量参数,因此:

UPDATE table
SET column_b = md5(column_a)
WHERE column_a IS NOT NULL;

请注意,使用计算列(在 Postgres 12 中可用)来存储此派生信息可能会更简单。


推荐阅读