[英]Many-to-many relationship: select players that are not on a specific team
我試過研究這個,但不知道該搜索什么。 我有一個players
表,一個團隊表和一個鏈接表。 玩家可以在多個團隊中。
我需要選擇不在XYZ隊伍中的所有球員。
我試過了:
SELECT * FROM players LEFT JOIN linker ON players.playerID = linker.playerID
WHERE NOT linker.teamID = 'XYZ'
但隨后一名球員被多次返回並且我得到誤報(比如球員在XYZ,ABC和LMNOP球隊 - 球員被退回兩次)。
我嘗試過使用GROUP BY players.playerID
來處理重復項。 但后來我得到誤報,XYZ上的玩家出現在列表中。
我確信有一些我不知道的東西。
(PS我需要這個的原因是建立一個可以添加到球隊的球員名單,即那些尚未加入球隊的球員。)
使用NOT IN
:
SELECT *
FROM players
WHERE playerID NOT IN
( SELECT playerID
FROM linker
WHERE teamID = 'XYZ'
)
使用LEFT JOIN - IS NULL
,您的嘗試已更正:
SELECT players.*
FROM players
LEFT JOIN linker
ON linker.playerID = players.playerID
AND linker.teamID = 'XYZ'
WHERE linker.playerID IS NULL
使用NOT EXISTS
:
SELECT *
FROM players
WHERE NOT EXISTS
( SELECT *
FROM linker
WHERE linker.playerID = players.playerID
AND linker.teamID = 'XYZ'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.