You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL如何通过关联两张表的数据更新user_workplace表指定字段

错误原因分析

  • 第一种写法报错原因:UPDATE语句未引入users表,WHERE条件中直接引用users.id时数据库无法定位表来源,因此抛出missing FROM-clause entry for table "users"错误。
  • 第二种写法返回UPDATE 0的原因:
    1. FROM子句中重复声明了user_workplace表,和要更新的主表未建立关联,导致匹配逻辑完全错位
    2. 使用LIKE匹配时字符串末尾带了多余空格('John '),如果库中存储的姓名没有末尾空格,也会匹配不到结果,无模糊匹配需求时优先用等值匹配=

正确SQL写法

写法1(PostgreSQL兼容,UPDATE FROM语法)

UPDATE public.user_workplace uw
SET status = 'DISABLED'
FROM public.users u
WHERE uw.user_id = u.id
  AND u.first_name = 'John'
  AND u.last_name = 'Doe';

写法2(通用语法,兼容MySQL、SQL Server等绝大多数数据库)

UPDATE user_workplace
SET status = 'DISABLED'
WHERE user_id IN (
    SELECT id 
    FROM users
    WHERE first_name = 'John'
      AND last_name = 'Doe'
);

注意事项

执行更新前建议先运行查询语句确认匹配行数,避免误改数据:

SELECT COUNT(*) AS 匹配记录数
FROM user_workplace uw
JOIN users u ON uw.user_id = u.id
WHERE u.first_name = 'John' AND u.last_name = 'Doe';

内容的提问来源于stack exchange,提问作者Artur Dino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:45:03