我无法通过 PostgreSQL 中的某种 JOIN 来理解 UPDATE
我有下表(名称),有时在第 3 列填写同义词:
id,name,synm,sd
41,xgvf
24,y4tg
32,zagr,xgvf
48,argv,bvre
53,bvre
我喜欢用'父'id填充第4列(sd)(sd列现在是空的)
id,name,synm,sd
41,xgvf
24,y4tg
32,zagr,xgvf,41
48,argv,bvre,53
53,bvre
我尝试了以下 sql 语句(以及许多类似的版本)...
update names
set sd =
(select n2.id from names n1
inner join names n2
on
n1.synm = n2.name);
...我收到以下错误:
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
我了解我当前的错误 SQL 尝试用所有找到的 id 填充一个 sd 行。所以不知何故我不明白。
如何在整个表中填写同义词 id (sd)?也许 WITH RECURSIVE 之类的语句?