我有两张 table ,一张是游戏,一张是参与者。
一个游戏可以有多个参与者。现在我需要搜索是否已插入游戏。我使用内部联接进行了查询。
SELECT game.gameId
FROM game
INNER JOIN participants
WHERE game.gameId = participants.gameId
AND participants.name = 'Team1'
AND participants.name = 'Team2'
这没有按我预期的方式工作,有没有办法在一个查询中检查团队 1 和 2 之间是否匹配?
谢谢!
编辑
表格布局:
**game**
PK gameId
date
**participants**
PK id
FK gameId
name
type //home or visiting
最佳答案
以下应该有效。它将使用游戏 ID 加入游戏和参与者,并确保名称为 Team1 和 Team2。这假设参与者是多对多的游戏,并且每场比赛只有两支球队。
SELECT participants.gameId
FROM game
JOIN participants
ON game.gameId = participants.gameId
WHERE participants.name = 'Team1'
OR participants.name = 'Team2'
GROUP BY participants.gameID
HAVING COUNT(*) = 2
关于sql - 如何在内连接上搜索多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098012/