MYSQL基于同一字段值和仅基于同一字段值连接两个表并获取结果

MYSQL基于同一字段值和仅基于同一字段值连接两个表并获取结果,mysql,join,Mysql,Join,详情: 基本上有两个MYSQL表(contacts和transactions),需要根据两个条件获取contactid 获取根本没有交易的所有联系人(contactid) 仅获取具有一个或多个事务但所有事务都处于取消状态的联系人 救命 您实际上可以通过简单的左连接来完成此操作。。。并查找NULL(未找到)。通过执行左联接,它将从左表中获取所有记录,而不考虑右表中的匹配项。因此,如果我们专门为Cancelled=“No”设置事务表的连接条件,并找到匹配项,则从结果集中忽略该条件。如果交易记录中没

详情:

基本上有两个MYSQL表(contacts和transactions),需要根据两个条件获取contactid

  • 获取根本没有交易的所有联系人(contactid)
  • 仅获取具有一个或多个事务但所有事务都处于取消状态的联系人

  • 救命

    您实际上可以通过简单的左连接来完成此操作。。。并查找NULL(未找到)。通过执行左联接,它将从左表中获取所有记录,而不考虑右表中的匹配项。因此,如果我们专门为Cancelled=“No”设置事务表的连接条件,并找到匹配项,则从结果集中忽略该条件。如果交易记录中没有记录,或所有记录都设置为“已取消=“是”,则它们将被排除在联接条件之外,因此将被视为“未找到”


    你是要SQL代码吗?你尝试过什么?好的,这很有效,除了我必须更改t。取消“是”以获得正确的结果。非常感谢@艾哈迈德,事实上没有。。。你想找任何有“是”的。。。如果它找到了一个,这些就是你想要忽略的。。。因此,逻辑上的否定是找不到一个,并得到我开始使用的空值。如果您的取消状态都是大写,则更改为“是”或“是”,无论您的一致值设置是什么。但换成“是”就没有答案了。如果有人有是和否。。。它会找到否,包括它和错误,因为测试中遗漏了一个是。正在执行。。。从联系人中选择c.ContactID c LEFT JOIN Transactions t on c.ContactID=t.ContactID和t.Cancelled=“是”当t.contactID为null时,我得到了3,5,6,但执行select c.contactID from Contacts c LEFT JOIN Transactions t on c.contactID=t.contactID和t.Cancelled=“no”当t.contactID为null时,我得到了联系人Id 2,4,6的预期结果,有意义吗?@Ahmed,没有,但只要你对它很在行,我会验证那些同时有“是”和“否”取消状态条目的实例。你的回答对我来说是非常有用的。再次感谢这是我想说的,只是为了理解
    select
          c.ContactID
       from
          Contacts c
             LEFT JOIN Transactions t
                on c.ContactID = t.ContactID
               AND t.Cancelled = "yes"
       where
          t.contactID is null