gpt4 book ai didi

mysql - 需要"Reverse Join",使用mysql

转载 作者:行者123 更新时间:2023-11-29 17:49:38 25 4
gpt4 key购买 nike

我需要做我所描述的“反向连接”——也就是说,我需要在表 A 中创建一个不在表 B 中的行列表,其中 A.FNAME 就像 B.FNAME 和 A. LNAME 类似于 B.LNAME。重点是提取在先前的邮件中被忽略的邮件列表条目。不幸的是,两个表之间的主键不一致。由于操作人员经验不足,表 B 在最初创建表 A 时未能从表 A 中复制它们。

针对“反向连接”返回的搜索响应似乎都没有解决这种情况;我是想在这里“证明否定”吗?我以为我可以创建完整邮件列表的临时表,然后从中删除较短列表中具有匹配 FNAME 和 LNAME 的每一行,但我似乎无法在不破坏较短列表中的情况下执行此操作流程。

最佳答案

无需加入:

SELECT * 
FROM tableA
WHERE (fname, lname) NOT IN (SELECT fname, lname FROM tableB)

但可以用一个来完成:

SELECT a.*
FROM tableA AS s
LEFT JOIN tableB as b ON a.fname = b.fname AND a.lname = b.lname
WHERE b.somefield_that_cannot_be_null IS NULL

第二个版本通常是我的第一本能(加入时我在索引方面运气更好),但由于涉及的字段不太可能被索引,而且字符串比较的成本相对较高,我认为第一个版本的意图是更清晰。

注意:LIKE 是不必要的,除非您希望在字段值中使用通配符 (%)...在这种情况下,联接版本是这两个版本中的唯一选项。

关于mysql - 需要"Reverse Join",使用mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49501441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com