连接两列并用postgresql中的结果替换其中一列

时间:2017-03-10 05:58:27

标签: postgresql sql-update subquery concatenation

我有一个表,在列location中有文件的文件夹,例如'/home/ubuntu/test'name列中有文件名,例如'test1.png'

我想用完整路径替换location列,例如'/home/ubuntu/test/test.png'

我试过了:

UPDATE experiment_11.microscope_image_files
SET location=(SELECT concat_ws('/', location::text, name::text) 
FROM experiment_11.microscope_image_files);

但是我收到以下错误:

  

错误:用作表达式

的子查询返回多行

1 个答案:

答案 0 :(得分:1)

您不需要子查询。相反,只使用:

UPDATE experiment_11.microscope_image_files SET
location = location || '/' || name

错误是由子查询返回超过1行(实际上它返回所有行)引起的,但是当用作表达式时(就像你做的那样)它必须返回0或1行。