You need to enable JavaScript to run this app. 如何编写匹配多表关联特定条件的SQL UPDATE语句
优惠活动
大模型
产品
解决方案
定价
更多

如何编写匹配多表关联特定条件的SQL UPDATE语句

多表关联数据库开发场景

表结构定义

所有表均已配置合规外键约束,且存储有对应业务数据,各表字段如下:

  • Environment 表:字段包含 ID、CUSTOMER_ID、ALLOW_ACCESS
  • CUSTOMER 表:字段包含 ID
  • CUSTOMER_CARD 表:字段包含 ID、CUSTOMER_ID
  • APPLICATION 表:字段包含 ID、NAME
  • APP_ROLE 表:字段包含 ID、APPLICATION_ID、NAME
  • COMBINE_TABLES 表:字段包含 ID、CUSTOMER_ID、CUSTOMER_CARD_ID、ENVIRONMENT_ID、APP_ROLE_ID

核心更新需求

对所有关联客户满足判定条件的Environment表行执行更新操作,将行内 ALLOW_ACCESS 字段值设置为1,判定条件满足任意一项即可触发更新:

  • 该客户在 CUSTOMER_CARD 表中不存在任何关联条目
  • 该客户虽在 CUSTOMER_CARD 表中存在关联条目,但 COMBINE_TABLES 表中不存在同时关联名称为Foo的应用、名称为Bar的应用角色的记录

当前尝试编写的筛选目标数据的SQL语句

SELECT * FROM ENVIRONMENT TE WHERE NOT EXISTS( 
  SELECT 1 
  FROM COMBINE_TABLES CT 
  INNER JOIN APP_ROLE AR ON CT.APP_ROLE_ID = AR.ID 
  INNER JOIN APPLICATION A ON A.ID = AR.APP_ID 
  WHERE TE.ID = CT.TENANT_ENV_ID 
    AND A.NAME = 'Foo' 
    AND AR.NAME = 'Bar'
)

内容的提问来源于stack exchange,提问作者Alex Len

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 11:06:06