Sql 需要一个查询(你可以在那里使用交叉连接)

Sql 需要一个查询(你可以在那里使用交叉连接),sql,oracle,plsql,Sql,Oracle,Plsql,表名为cricket,列为team: 我需要一个可以显示如下结果的查询:请参阅下表 team_a team_b ------ ------ IND BAN IND PAK IND SRI BAN PAK BAN SRI PAK SRI 有人能帮我吗?你需要一个交叉连接和一个表上的自连接 select a.team as team_a , b.team as team_b from cricket a cro

表名为cricket,列为team:

我需要一个可以显示如下结果的查询:请参阅下表

team_a  team_b
------  ------
IND      BAN
IND      PAK
IND      SRI
BAN      PAK
BAN      SRI
PAK      SRI

有人能帮我吗?

你需要一个交叉连接和一个表上的自连接

select a.team as team_a
       , b.team as team_b
from cricket a
     cross join cricket b
where a.team != b.team 
/
诀窍是WHERE子句,它阻止加入同一个团队,因为显然IND不能和IND比赛

如果不希望生成对等匹配对,请将WHERE条件更改为使用小于而不是相等:

select a.team as team_a
       , b.team as team_b
from cricket a
     cross join cricket b
where a.team < b.team 
/

这是。

您尝试过查询了吗?标题说明了您需要的一切。就这么做。@Tim Biegeleisen,是的,但我在用户数据中得到了这个ORA-01436:CONNECT BY loop作为错误。不,它不会发生,它给了我12行,而我只需要6行。对不起,我以为你在尝试生成“主客场”匹配。你决定一个团队是a队还是B队的规则是什么?不知道,实际上这是一个面试问题,顺便说一句,谢谢,我已经得到了答案。@APC:我当然喜欢这个问题。。。还有这个游戏——就像印度的一种宗教。我出于其他原因拒绝了这个提议-@KaushikNayak——好吧,你拒绝了他们的提议,他们也因为这个问题拒绝了我;
select a.team as team_a
       , b.team as team_b
from cricket a
     cross join cricket b
where a.team < b.team 
/