2014-04-13 45 views
0

我想看看玩家A(9)和玩家B(14)是否曾經進入過同一回合,其中一回合有很多玩家進入。這是一個許多人希望子彈和玩家之間的多對多關係的中間表MySQL根據2個ID找到一個ID

table: entries 
id | roundID | PlayerID 
5 | 7  | 14 
4 | 6  | 2 
3 | 5  | 14 
2 | 5  | 9 
1 | 4  | 9 

進出口尋找返回輪ID 5很明顯,但什麼樣的SQL語句這是否需要?一個JOIN?

我可以通過讓玩家A和B玩的所有回合分別循環來完成回合通過在每次A的循環中循環B輪來尋找比賽,但是這似乎是不必要的昂貴。

+1

'INNER JOIN',是的 – zerkms

回答

1

像這樣的事情應該工作,基本上讓每roundID所有PlayerID enteries的計數只對指定玩家並限制只顯示具有倍數的數字。

SELECT 
    roundID 
FROM 
    entries 
WHERE 
    PlayerID IN (9, 14) 
GROUP BY 
    roundID 
HAVING 
    COUNT(*)>1 
0

如果我理解正確的問題,一些簡單的SELECT DISTINCT將在這裏工作:

SELECT DISTINCT roundID 
FROM entries 
WHERE PlayerID IN (9, 14) 
+0

這不會返回'7,5,4'而不只是'5'嗎?我認爲OP希望有'playerID'存在的'roundID'。 – Sean

0

使用與INNER JOIN子查詢作爲遵循

SELECT * FROM(SELECT * FROM測試WHERE player_id = '9')T9 INNER JOIN(SELECT * FROM測試WHERE player_id = '14' )T14 ON t9round_id = t14round_id