我试图在一个查询中返回不同的结果,特别是查询返回ranking特定competition 使用round.id字段的结果,现在有时这个表可以使字段值group.id,如果是这样,我只需要返回具有group.id可用最小值的排名,所以我创建了这个设计:
SELECT l.*,
t.name as team_name,
r.name AS rank_name,
r.color AS rank_color
FROM league_ranking l
LEFT JOIN team t ON l.team_id = t.id
LEFT JOIN competition_ranks r ON l.rank = r.id
INNER JOIN competition_groups g
WHERE l.round_id = :round_id
AND l.group_id = (
SELECT MIN(l2.group_id)
FROM league_ranking l2
WHERE l2.round_id = :round_id
)
如果排名记录有group.id可用,则此方法有效,但如果此字段为NULL空,则不会返回,league_ranking表数据的一个小例子:
| round_id | group_id | team_id
5 3 1045
5 3 1046
6 NULL 1047
6 NULL 1048
如果我搜索为round.id5,将返回前两条记录,但如果我搜索round.id6,则不会返回任何内容。如果没有group.id关联,我如何构造我的查询以返回结果?