假设您有一个数据库架构,其中包含与游戏相关的锦标赛.锦标赛可能有很多比赛.
我正在尝试参加比赛,只会在未来的所有比赛中回归锦标赛.
SELECT DISTINCT tournaments.*
FROM tournaments
INNER JOIN games ON tournaments.game_id = games.id
WHERE games.event_date >= NOW();
Run Code Online (Sandbox Code Playgroud)
还有一些我正在加入的表格,但为了这个例子,我简化了它.
我的查询是拉回结果,而不是将来所有比赛中的所有比赛.
我也尝试将条件移入连接:
SELECT DISTINCT tournaments.*
FROM tournaments
INNER JOIN games ON (tournaments.game_id = games.id AND games.event_date >= NOW())
Run Code Online (Sandbox Code Playgroud)
但我得到了相同的结果.
如何确保将来返回的所有锦标赛都有游戏 - 也就是说,在所有加入的行中强制执行条件?
谢谢!
我不确定这个确切的查询是否适合MySQL.但是这个想法应该有效 - 对于每场锦标赛,确定最早的比赛日期,并且仅返回该日期比现在更大的锦标赛.
SELECT * from tournaments
WHERE id IN
( SELECT tournaments.id
FROM tournaments INNER JOIN games ON tournaments.game_id = games.id
GROUP BY tournaments.id
HAVING MIN(games.event_date) >= now()
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
257 次 |
| 最近记录: |