我正在尝试将一个值更新为null,其中tracker\u unique\u id可以在ab\u split\u tracker\u unique\u链接中找到,而那些ab\u split\u id可以在第三个表ab\u split\u候选中找到。
我不能通过给它不同的值来实现,因为在本地机上,不同用户的值是不同的
UPDATE trustpilot_links SET `invite_after_enquiry` = NULL
WHERE EXISTS (
SELECT tracker_unique_id, ab_split_tracker_unique_link.ab_split_candidate_id
FROM ab_split_tracker_unique_link
WHERE EXISTS (
SELECT ab_split_candidate_id
FROM ab_split_candidate LEFT JOIN ab_split
ON ab_split_candidate.ab_split_id = ab_split.ab_split_id WHERE ab_split.reference="review_invite_after_enquiry"
)
);
编辑:
表格示例
trustpilot链接 trustpilot_link_id | invite_after_enquiry | tracker_unique_id 1 1 123 2 0 1234
ab\分割\跟踪器\唯一\链接 tracker_unique_id | ab_split_id 1234 32
ab分离 ab_split_id | reference 32 review_invite_after_enquiry
如果在表ab\u split\u tracker\u unique\u link中找不到tracker,并且ab\u split\u id等于在ab\u split中查询后复查\u invite\u,我想将值设置为null
1条答案
按热度按时间camsedfj1#
子查询与其父查询没有应有的关联。让我们看看你内心深处的疑问:
好吧,首先你的
WHERE
子句取消外部连接的记录,因此这本质上是一个INNER JOIN
. 但是,不管有没有这样的记录。这与您可能要更新的记录无关,也与ab_split_tracker_unique_link
你抬头看。所以要么你正在更新所有的记录,要么没有。
我们更希望看到
因此,添加where子句,将子查询与其父查询相关联。