我有一张桌子。
<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相同的ID的表B中的值列
<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);
但它显示“错误:由用作表达式的子查询返回的一行以上”
我该如何解决?非常感谢!
答案 0 :(得分:1)
您正在寻找string_agg()
:
update B
set B.value = (select string_agg(A.value, ';')
from A
where A.ID = B.ID
);