我需要有关此查询的帮助。我在客户表中有记录
Main table - M
+---------+---------+----------+
| company | Account | Active |
+---------+---------+----------+
| A | A123 | Active |
| A | A123 | InActive |
| B | B123 | Inactive |
+---------+---------+----------+
Reference table - R
+---------+---------+
| company | Account |
+---------+---------+
| A | A123 |
| B | B123 |
| C | C123 |
+---------+---------+
从 R 中存在但处于非活动状态的 M 中提取所有记录。这里的问题是一家公司可能在 M 中有一个非活动账户和一个活动账户,我只想提取那些只有非活动账户而没有活动账户的公司。所以从两张表中,我应该得到
+---------+---------+----------+
| company | Account | Active |
+---------+---------+----------+
| B | B123 | Inactive |
+---------+---------+----------+
因为虽然它确实存在于 R 中,但它也具有活动帐户状态,所以我必须排除它。
所以我认为它只能是一个活动行和一个非活动行。这是仅使用 JOIN 的解决方案。如果可以有多个(活动)行,您应该使用
EXISTS
,正如@ypercube 在他的评论中已经提到的那样。正如@ypercube 评论的那样:您是否不希望任何活动帐户使公司无效,或者只是一个匹配的活动帐户,这一点并不完全清楚。
我
matching
在查询中使用了帐户。AND M2.account = R.account
如果需要,请从 JOIN 条件中删除any
。