求编写可生成cricket表中球队两两组合的SQL查询语句(支持Cross Join)
使用Cross Join生成无反向重复的球队两两组合
没问题,这就给你写出符合需求的SQL语句,顺便拆解下背后的逻辑:
SELECT c1.team AS team_a, c2.team AS team_b FROM cricket c1 CROSS JOIN cricket c2 WHERE c1.team < c2.team ORDER BY c1.team, c2.team;
逻辑说明:
- 先用
CROSS JOIN把cricket表和自身做笛卡尔积,这一步会生成所有可能的球队配对(包括A-B和B-A这类反向重复,以及球队和自身的组合)。 - 核心过滤条件是
WHERE c1.team < c2.team:因为你的球队代码是字符串格式(IND、BAN等),按字典序比较时,只会保留team_a字典序小于team_b的组合,自动排除了反向重复和自配对的情况。 - 最后加上
ORDER BY是为了让结果和你给出的示例顺序完全一致,呈现更规整。
运行这条语句后,得到的结果集就会和你要求的示例完全匹配啦。
内容的提问来源于stack exchange,提问作者Ranjan
相关产品推荐
相关产品推荐

