我有以下的數據庫模式:LEFT JOIN同桌多次
Players表:
| player_id |
|-----------|
| 1 |
| 2 |
| 3 |
| 4 |
| ... |
遊戲表:
| game_id | white_player_id | black_player_id | game_status |
|----------|-----------------|-----------------|-------------|
| 1 | 1 | 2 | in progress |
| 2 | 3 | 4 | in progress |
| 3 | 5 | 6 | white won |
| 4 | 1 | 3 | draw |
| ... | ... | ... | ... |
我想選擇所有的球員,誰不是目前播放。
我試圖用以下方式實現它,但它不能像我期望的那樣工作。
SELECT player.player_id
FROM players
LEFT JOIN games g1
ON players.player_id = g1.white_player_id
LEFT JOIN games g2
ON players.player_id = g2.black_player_id
WHERE
g1.white_player_id IS NULL AND
g1.game_status NOT IN ('in progress') OR
g2.white_player_id IS NULL AND
g2.game_status NOT IN ('in progress')
任何幫助將不勝感激。
我想那正是我需要的。謝謝。這種方法比左連接更容易。 – koryakinp