首页 > 解决方案 > 如何通过比较几个字段而不是其他字段来进行 JOIN

问题描述

我有 2 张桌子

在此处输入图像描述

我想根据两个表之间的A、B和C列匹配的条件连接两个表,但是表A中的列D在表B中不存在,前提是A、B和C列匹配。

所以是这样的:

 SELECT A.*
 FROM   tableA A
 JOIN   tableB B ON A.A = B.A AND A.B = B.B AND A.C = B.C
 -- but 
 A.D NOT IN B.D, where the 3 conditions above match

预期的结果是

表 A:

 1 | 3 | 4 | 7
 1 | 4 | 5 | 8

是否可以在一个查询中完成?

标签: sql

解决方案


我想你可能想要

SELECT A.*
 FROM   tableA A
 JOIN   tableB B
    ON A.A = B.A 
     AND A.B = B.B
     AND A.C = B.C
     AND B.D <> A.D

根据您的预期结果,您似乎只想要跨 A|B|C 的匹配,而不是跨 A|B|C|D 的匹配


推荐阅读