MySQL根据2个ID查找ID

时间:2014-04-13 23:30:52

标签: php mysql sql database join

我想看看玩家A(9)和玩家B(14)是否曾进入同一轮,一轮有很多玩家参赛。这是轮次和球员之间多对多关系的中间表

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

我希望明显返回ID 5,但这需要什么SQL语句?加入?

我可以通过玩家A和B玩的所有回合分别循环进行回合并在A的每次迭代中循环通过Bs回合来寻找匹配,但这似乎是不必要的代价。

3 个答案:

答案 0 :(得分:1)

这样的事情应该有效,基本上只为指定的玩家计算每个roundID的所有玩家ID输入,并限制只显示具有倍数的玩家。

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

答案 1 :(得分:0)

如果我正确理解了这个问题,那么像SELECT DISTINCT这样简单的东西就可以了:

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

答案 2 :(得分:0)

对子查询使用INNER JOIN,如下所示

SELECT * FROM(SELECT * FROM tests WHERE player_id =' 9')t9 INNER JOIN(SELECT * FROM tests WHERE player_id =' 14' )t14 ON t9round_id = t14round_id