使用 postgresql 根据 select 查询更新表 2 中的列,该查询包含表 1 中的 count()

Update column in table2 based on select query which contains count() from table1 using postgresql

Tables

需要根据员工 table 的 dno 列中每个部门的员工人数更新部门 table 的 dcount 列。 尝试使用 update department set dcount=(select count() from employee INNER JOIN department ON employee.dno=department.dnumber group by dno) ;* 这给出了一个错误:用作表达式的子查询返回多于一行

期望的结果是:

**dname|dnumber|dcount

研究|5|4

管理员|4|3

总部|1|1**

需要帮助。 提前致谢。 格鲁希斯

您的子查询 (select count() ...) returns 多行,每个员工一行,其中 postgres 只期望来自该子查询的一行,以便在 department table。在这种情况下,您可以使用 cte 代替:

WITH list AS
(
select dno, count(*) AS dno_count
  from employee
 group by dno
)
update department AS d
   set dcount = l. dno_count 
  from  list AS l 
 where d.dnumber = l.dno ;