根据公共 ID 比较 MySQL 中的两个表

Comparing two tables in MySQL based on a common ID

我正在尝试 运行 一个查询,该查询显示不属于其某个组的客户的所有成员。我正在比较两个具有共同 CustomerID 的 table,并使用它们的成员 ID 来显示哪些成员不在第二个 table、CustomerGroupMember 中。

这是两个 table 的示例。

客户会员

    id  | CustomerID | First | Last
    ---------------------------------
    123 | 1234       | Jim   | Sample
    129 | 1234       | Julie | Clark
    137 | 1234       | Jack  | Thomas
    289 | 1234       | Sue   | Smith

客户组成员

    MemberID  | CustomerID | GroupID
    ---------------------------------
    129       | 1234       | 19
    289       | 1234       | 20

下面是我的查询,但似乎没有产生任何结果。我希望它输出在该客户组成员 table 中找不到的任何人。在上面的 table 示例中,我会看到成员 123 和 137 的输出。

SELECT CustomerMember.* FROM CustomerMember 
LEFT JOIN
 CustomerGroupMember ON CustomerMember.id = CustomerGroupMember.MemberID 
WHERE 
CustomerMember.CustomerID = '1234' AND CustomerGroupMember.CustomerID = '1234' 
AND CustomerGroupMember.MemberID IS NULL

对于第二个条件 (CustomerGroupMember.CustomerID = '1234'),您正在将 LEFT JOIN 转换为 INNER JOIN。 CustomerGroupMember 列中所有包含 NULL 的行都将被过滤掉,因为 NULL 不能等于“1234”。您需要将该条件移动到 ON 子句中:

SELECT CustomerMember.* FROM CustomerMember 
LEFT JOIN
 CustomerGroupMember 
 ON CustomerMember.id = CustomerGroupMember.MemberID 
 AND CustomerGroupMember.CustomerID = '1234'
WHERE 
CustomerMember.CustomerID = '1234'  
AND CustomerGroupMember.MemberID IS NULL;

http://rextester.com/DLTQ86207