基于另一个表的SQL更新

时间:2018-03-29 08:37:58

标签: sql postgresql join sql-update

我一直在浏览几篇文章,但一直无法理解如何在PostgreSQL中实现以下功能

Table 1
---------

USER_ID    NAME
1          User
2          Test

Table 2
--------

USER_ID    WIDGET_ID   WIDGET_CONFIG
1              1             abc
1              2             def
2              1             abc
2              2             def

我有2张桌子,我需要的是

  • 从表1中选择,其中用户名=“测试”
  • 使用该ID(2)选择USER_ID为2且WIDGET_ID为2的小部件
  • 将widget_config更新为“ghi”,例如

我使用WITH语句可能完全以错误的方式扭曲了

WITH res AS ( 
    SELECT agent_id FROM tbl_agent WHERE agentlogin_id='2man'
)

SELECT tbl_agentwidgetconfig
WHERE agent_id=res.agent_id AND widget_id=5;

// Update record code?

如果有人能够对正确的方法有所了解,那将非常感激!

3 个答案:

答案 0 :(得分:0)

我认为你在描述这样的事情?

UPDATE
    aw
SET
    WIDGET_CONFIG = 'ghi'
FROM
    tbl_agent a
    INNER JOIN tbl_agentwidgetconfig aw ON aw.USER_ID = a.USER_ID
WHERE
    a.NAME = 'Test'
    AND aw.WIDGET_ID = 2;

答案 1 :(得分:0)

像这样的东西

itemScreen

答案 2 :(得分:0)

您也可以通过子查询执行此操作:

UPDATE table2 
SET WIDGET_CONFIG = 'ghi'
WHERE WIDGET_ID = 2 AND USER ID = (SELECT USER_ID FROM table1 WHERE NAME = 'Test');