用例:
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
但在场景中这些是两个相同的比赛。任何关于如何纠正这个错误的建议都表示赞赏。
答案 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 distinct
比select
贵,只应在需要时使用。