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

求助:带双EXISTS子句的SQL UPDATE语句修正与字段置空

修正含双EXISTS子句的UPDATE SQL语句

我来帮你搞定这条UPDATE语句的逻辑修正,完全匹配你的需求:把trustpilot_links表中满足两个条件的记录的invite_after_enquiry字段设为NULL——一是这条记录的tracker_unique_id压根没出现在ab_split_tracker_unique_link表里,二是ab_split_tracker_unique_link表中对应的ab_split_id在ab_split表中的reference值正好是'review_invite_after_enquiry'。

先看一下你的表结构示例

trustpilot_links表

trustpilot_link_idinvite_after_enquirytracker_unique_id
11123
201234

ab_split_tracker_unique_link表

tracker_unique_idab_split_id
123432

ab_split表

ab_split_idreference
32review_invite_after_enquiry

修正后的UPDATE语句

UPDATE trustpilot_links tpl
SET invite_after_enquiry = NULL
WHERE NOT EXISTS (
    -- 筛选出tracker_unique_id从未出现在ab_split_tracker_unique_link的记录
    SELECT 1 
    FROM ab_split_tracker_unique_link astul 
    WHERE astul.tracker_unique_id = tpl.tracker_unique_id
)
AND EXISTS (
    -- 确认ab_split_tracker_unique_link中存在符合reference要求的关联记录
    SELECT 1 
    FROM ab_split_tracker_unique_link astul
    INNER JOIN ab_split abs 
        ON astul.ab_split_id = abs.ab_split_id
    WHERE abs.reference = 'review_invite_after_enquiry'
);

逻辑解释

  • 第一个NOT EXISTS子句:逐个检查trustpilot_links里的每条记录,只保留那些tracker_unique_id在ab_split_tracker_unique_link表中完全找不到匹配的记录;
  • 第二个EXISTS子句:确保ab_split_tracker_unique_link表中确实存在关联到ab_split表中reference为'review_invite_after_enquiry'的记录——只有当这个条件也满足时,才会执行字段置NULL的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:29:26