簡體   English   中英

多對多關系:選擇不在特定團隊中的玩家

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM