我正在处理一个项目,下一部分我将需要比较2个查询的结果。
方案: 在表格中我保留了团队中的所有球员。 在另一张桌子上只有教练要求比赛的那些。
我想知道哪些球员被排除在外
我采取的最佳方法是什么?
我可以使用类似
的内容吗? (Query for Selecting all players)
EXCEPT
(Query for Selecting the ones called by the coach)
表
所有球员
Number | Name
------ | ------
23 | john
24 | Mario
选定的球员
Number | Name
------ | ------
23 | john
我希望它能够显示所选玩家表中缺少马里奥的结果
答案 0 :(得分:1)
使用NOT EXISTS
select * from all_players p1
where not exists
(select 1 from players p2
where p1.number=p2.number
and p1.name=p2.name
-- and -- You can add other columns here
) t
使用LEFT JOIN
select p1.* from all_players p1
left join players p2
on p1.number=p2.number
and p1.name=p2.name
-- and p1.last_name=p2.last_name --add other columns
where
(p2.number is null
and p2.name is null
-- and p2.last_name is null --add other columns
)
使用IN,如果有相同的键匹配
select * From all_players p
where number not in (select number from players)
答案 1 :(得分:0)
用户这个你可以得到你的结果
Select players from players_table where player not in (select coach_selected_player from coach_selected_player_table)