如何根据其他列的过滤器更新列?

时间:2018-01-04 23:34:27

标签: sql database postgresql

我尝试使用过滤器基本上更新表中的行子集,但目前我的查询正在更新所有值而不是预期的子集。我不确定我错过了什么。

这是当前(不工作)update的样子。

UPDATE account_type
SET type_id = 3
FROM my_filter;

我已经能够成功选择我想要的数据,我只是无法弄清楚如何让更新发挥作用。我可以使用以下select语句正确访问这些字段。

SELECT account_type FROM my_filter;

但是当我尝试更新时,它会更新每个字段。以下是我所看到的(工作)join的内容,包含在CTE中。

WITH my_filter AS
(
  SELECT account_type.type_id, username
  FROM account_type
  INNER JOIN user ON user.account_id = account_type.account_id
  WHERE username LIKE 'filter%'
)

1 个答案:

答案 0 :(得分:2)

您需要popen()条件。我猜:

join

另外,您可以将其写为:

UPDATE account_type
    SET type_id = 3
    FROM my_filter
    WHERE account_type.type_id = my_filter.type_id;