postgreSQL - 从"Select more than one row returned"收集值



我有一个表 A 一样

<table>
<tr>
<td>ID</td><td style="width:20px"></td>
<td>Value</td>
</tr>
<tr>
<td>1</td><td style="width:20px"></td>
<td>A1</td>
</tr>
<tr>
<td>2</td><td style="width:20px"></td>
<td>B1</td>
</tr>
<tr>
<td>3</td><td style="width:20px"></td>
<td>C1</td>
</tr>
<tr>
<td>1</td><td style="width:20px"></td>
<td>A2</td>
</tr>
<tr>
<td>2</td><td style="width:20px"></td>
<td>B2</td>
</tr>

</table>

我想要更新表 B 中的值列,通过 ID 从表 A 中选择相同的

<table>
<tr>
<td>ID</td><td style="width:20px"></td>
<td>Value</td>
</tr>
<tr>
<td>1</td><td style="width:20px"></td>
<td>A1;A2</td>
</tr>
<tr>
<td>2</td><td style="width:20px"></td>
<td>B1;B2</td>
</tr>
<tr>
<td>3</td><td style="width:20px"></td>
<td>C1</td>
</tr>

</table>

我已经运行了这个查询:

update B
set B.value = (select A.value from A where A.ID = B.ID);

但它显示"错误:用作表达式的子查询返回的多行">

我该如何解决?非常感谢!

您正在寻找string_agg()

update B
set B.value = (select string_agg(A.value, ';')
from A
where A.ID = B.ID
);

相关内容

最新更新