sql - 如何更新列的值?
问题描述
我在 PostgreSQL 数据库中PROJECTS
有2 个表。PROJECTS_EMPLOYEES_RELATIONSHIP
如您所见,在第一个表中,我有一列名为TOTAL_EMPLOYEES
. 在该列中,我想根据第二张表的信息存储项目中的员工总数。我尝试了下一条 sql 语句,但它引发了错误。如何修复此错误?
项目:
| ID (uuid) | TOTAL_EMPLOYEES (int) |
|---------------------------------------|-----------------------|
| 36c89a24-fff2-4cbc-a542-b1e956a352f9 | 0 |
| 41c89a24-fff2-4cbc-a542-b1e956a352f9 | 5 |
PROJECTS_EMPLOYEES_RELATIONSHIP:
| PROJECT_ID (uuid) | EMPLOYEE (varchar) |
|---------------------------------------|-----------------------|
| 36c89a24-fff2-4cbc-a542-b1e956a352f9 | NNogerbek@gmail.com |
| 41c89a24-fff2-4cbc-a542-b1e956a352f9 | IKim@gmail.com |
SQL:
UPDATE PROJECTS
SET TOTAL_EMPLOYEES = COUNT(EMPLOYEE)
FROM PROJECTS
LEFT JOIN PROJECTS_EMPLOYEES_RELATIONSHIP
ON PROJECTS.ID = PROJECTS_EMPLOYEES_RELATIONSHIP.PROJECT_ID
WHERE PROJECTS.ID = PROJECTS_EMPLOYEES_RELATIONSHIP.PROJECT_ID;
错误:
SQL Error [42712]: ERROR: table name "PROJECTS" specified more than once.
解决方案
您可以在下面尝试 - 请参阅更新加入作为参考
UPDATE PROJECTS
SET TOTAL_EMPLOYEES = cntemployee
FROM (SELECT PROJECT_ID, COUNT(EMPLOYEE) AS cntemployee
FROM PROJECTS_EMPLOYEES_RELATIONSHIP
GROUP BY PROJECT_ID) B
WHERE PROJECTS.ID = B.PROJECT_ID
推荐阅读
- activiti - 我们可以更改活动表以添加额外的列吗?
- javascript - 如何在html中使用三元运算符来改变div的颜色
- java - 如何使用自定义适配器更改列表视图中的文本视图字体?
- java - 登录注销系统时间还是一样
- opengl-es - 读取 glMapBufferRange 返回的 SSBO 内容
- angular - 如何过滤数据并将其显示在详细的 Mat-table 上
- javascript - 在 HTML/CSS 标题下居中字幕
- bash - Vim on git bash on window(MINGW64) 在提交消息上自动换行
- python - 如何使用 PIL 在图像中“取消绘制”一个框
- javascript - fn使用 colspan 为 th 更新多 td