根据公共 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;
我正在尝试 运行 一个查询,该查询显示不属于其某个组的客户的所有成员。我正在比较两个具有共同 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;