从玩家列表开始生成比赛列表

时间:2018-08-14 14:30:29

标签: sql oracle oracle11g distinct-values

我有以下情况:

Input data: 

Table t1:
+-------------+
| Teams       |
+-------------+
| India       |
| Australia   |
| England     |
| Italy       |
+-------------+

Required output:
+-------------+------------+
| Team1       |   Team2    |
+-------------+------------+
| India       | Australia  |
| India       | England    |
| India       | Italy      |
| Australia   | England    |
| Australia   | Italy      |
| England     | Italy      |
+-------------+------------+

即与哪个国家(第Team2列)比赛的国家(第Team1列)。

我尝试使用完全外部联接,但无法获得不同的值。我们可以通过一个SQL查询来实现吗?

1 个答案:

答案 0 :(得分:4)

对不相等的团队进行“半”加入:

select a.team, b.team
from teams a
join teams b on a.team < b.team

请参见live demo on SQLFiddle

使用a.team < b.team而不是a.team != b.team只会返回组合而不是排列-您每次连接只得到一侧,给您唯一不同的组合。