返回在另一个表

时间:2015-05-27 20:37:26

标签: sql join left-join

无法找到有这个确切问题的问题。

我有2个表,我想从一个表中返回第二个表中不存在行的行。

我将举例说明。

第一张表:

teamName
联合国 运动
足球
橄榄球

第二张表:

用户名小组
加里联合 加里联合 Phil Rugby
菲尔拉格比

所以我想要做的是从第一个表中选择所有未出现在第二个表中的团队。但问题是我只希望它与用户名为Gary的行进行比较。

因此,从第一个表中选择第二个表中不存在团队名称的所有行,例如,用户名为Gary。

我设法通过左连接拉出第二个表中不存在团队名称的所有行,但是我不确定如何添加用户名等于某些内容的条件。

我意识到我可能要改变表格的结构。我愿意接受建议吗?

2 个答案:

答案 0 :(得分:1)

如果您想找到所有没有名为Gary的球员的球队,请使用left outer join

select t.*
from teams t left join
     userteams ut
     on t.teamname = ut.teamname and ut.name = 'Gary'
where ut.username is null;

答案 1 :(得分:0)

使用NOT EXISTS子句查找table2

中不存在的小组
SELECT t.*
FROM   teams t
WHERE  NOT EXISTS (SELECT 1
                   FROM   userteams ut
                   WHERE  t.teamname = ut.teamname
                          AND ut.name = 'Gary')