Mysql 根据两个表中的值选择行

Mysql 根据两个表中的值选择行,mysql,sql,Mysql,Sql,我在mysql数据库中获得了以下表格: 我想从帐户中选择ID、名称,其中帐户X表示未订阅ID为1的帐户 如果查看该图像,可以看到NAME=Name1的帐户已订阅Name3和Name4。在这种情况下,查询应该从ID=2的帐户返回第二行 有人知道查询可能是什么样子吗?您可能只想将表左键连接在一起,然后查找不匹配的表。大概是这样的: select a1.* from accounts a1 left join subbed s1 on a1.id = s1.receiver

我在mysql数据库中获得了以下表格:

我想从帐户中选择ID、名称,其中帐户X表示未订阅ID为1的帐户

如果查看该图像,可以看到NAME=Name1的帐户已订阅Name3和Name4。在这种情况下,查询应该从ID=2的帐户返回第二行

有人知道查询可能是什么样子吗?

您可能只想将表左键连接在一起,然后查找不匹配的表。大概是这样的:

select a1.* 
  from accounts a1
    left join subbed s1
      on a1.id = s1.receiver
        and s1.subscriber = 1
  where s1.subscriber is null and a1.id <> 1;

你可以试试这样的

从ID不在的帐户中选择ID、名称从子床中选择接收器
希望有帮助。

我们通常将此模式称为反连接。。。一个外部联接,用于返回一个表中的所有行以及另一个表中的匹配行,然后排除所有具有匹配的行+1例如,要从a返回在b中不匹配的行:在b.col=a.col上左连接b,其中b.col为空,请注意不要在子查询中返回空值。如果子查询返回NULL,则结果定义良好。但是,没有经验的人通常并不期望得到这样的结果,而且也不是他们真正想要的结果。如果我们不能保证RECEIVER在子查询中不为null,我们需要向子查询添加一个谓词。。。其中接收方不为空。
Select ID, NAME 
From ACCOUNTS
Where ID Not In (Select RECEIVER 
                 From SUBBED 
                 Where SUBSCRIBER = (Your X))
Select ID, NAME 
From ACCOUNTS
Where ID Not In (Select RECEIVER 
                 From SUBBED 
                 Where SUBSCRIBER = (Your X))