sql中的组合没有重复

时间:2018-03-08 12:39:50

标签: mysql sql

用例:

Table_name:团队。它有1列“国家/地区”

Country
India
lanka
aus

现在我需要创建一个新表,其中包含2列“Team 1”和Team 2“,用于生成匹配项。

示例:

Team1     Team2        
Ind       Lanka
Ind       Aus

忽略create table并插入表查询,这是我的select查询来完成此任务:

SELECT distinct
s1.Country as sk, 
s2.Country as sk2
from Teams s1 cross join Teams s2
where sk <> sk2

我能够获得部分输出,但我的问题是上面的查询包含如下所示的操作:

Team1     Team2
India      Aus
Aus        India

但在场景中这些是两个相同的比赛。任何关于如何纠正这个错误的建议都表示赞赏。

1 个答案:

答案 0 :(得分:2)

使用<

select s1.Country as sk, s2.Country as sk2
from Teams s1 join
     Teams s2
     on s1.sk < s2.sk;

请注意,您不能在where子句中使用列别名。相反,限定所有列引用。

如果表格中重复country,请使用select distinct

select distinct s1.Country as sk, s2.Country as sk2
from Teams s1 join
     Teams s2
     on s1.sk < s2.sk;

但如果这些国家是独一无二的,请不要打扰。 select distinctselect贵,只应在需要时使用。