使用 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 ;
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 ;