[英]How to update column based on filter of another column?
我正在尝试使用过滤器来基本上更新表中的行的子集,但是当前我的查询正在更新所有值而不是预期的子集。 我不太确定自己缺少什么。
这是当前(无效) update
样子。
UPDATE account_type
SET type_id = 3
FROM my_filter;
我已经能够成功选择所需的数据,只是无法弄清楚如何使更新生效。 我可以使用以下select
语句正确访问字段。
SELECT account_type FROM my_filter;
但是,当我尝试更新时,它将更新每个字段。 这是包装在CTE中的(有效) join
外观。
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%'
)
您需要一个join
条件。 我猜:
UPDATE account_type
SET type_id = 3
FROM my_filter
WHERE account_type.type_id = my_filter.type_id;
或者,您可以这样写:
UPDATE account_type
SET type_id = 3
FROM user
WHERE user.account_id = account_type.account_id AND
user.username LIKE 'filter%';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.