gpt4 book ai didi

mysql - 如何在同一个查询中返回不同的结果?

转载 作者:IT王子 更新时间:2023-10-29 00:33:53 26 4
gpt4 key购买 nike

我试图在一个查询中返回不同的结果,特别是查询使用 round.id 返回特定 competitionranking > 字段,现在有时这个表可以有字段 group.id valorized,如果是这样我只需要返回具有 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.id 5,将返回前两条记录,但如果我搜索 round.id 6,则不会返回任何内容。如果没有关联的 group.id,我如何构造我的查询以返回结果?

最佳答案

null不是值(value),而是缺乏值(value)。 null = null返回 null ,而不是 true ,因此对于没有 id 的组,此查询将不起作用。

您可以使用 <=>而不是 = ,但是,要评估两个 null s 相等:

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 <=> ( -- <=> used here instead of =
SELECT MIN(l2.group_id)
FROM league_ranking l2
WHERE l2.round_id = :round_id
)

关于mysql - 如何在同一个查询中返回不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51213108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com