48. 排列问题

文章目录

        • 题目需求
        • 思路一
        • 实现一
        • 思路二
        • 实现二
        • 题目来源

题目需求

现有球队表(team)如下。

team_name
(球队名称)
湖人
骑士
灰熊
勇士

拿到所有球队比赛的组合,每个队只比一次。

期望结果如下(截取部分):

team_name_1 (队名) team_name_2 (队名)
勇士 湖人
湖人 骑士
灰熊 骑士
勇士 骑士
湖人 灰熊
勇士 灰熊

思路一

使用 笛卡尔积。

实现一

-- 实现一: from 网友
select a.team_name as team_name_1, b.team_name as team_name_2
from team a
         cross join team b
where a.team_name < b.team_name;

思路二

不使用 笛卡尔积。

实现二

-- 实现二: from 网友改编
SELECT a.team_name team_name_1, b.team_name team_name_2
FROM team a
         JOIN team b ON a.team_name != b.team_name
WHERE a.team_name < b.team_name;

题目来源

http://practice.atguigu.cn/#/question/48/desc?qType=SQL

你可能感兴趣的:(#,HQL题目,hive,sql,数据库,大数据)