2

私は以下の表を持っています:

create table cric_country
(
id int,
country varchar (20)
)
insert into cric_country values
(1,'Ind'),(2,'Aus'),(3,'NZ')

国に 2 つの列が必要な国のプレイ フィクスチャを取得する必要があり、同じ国と繰り返しの試合を省略する必要があります。以下のクエリを書きました。

select
t1.country,t2.country
from cric_country t1
inner join
cric_country t2
on t1.country <> t2.country

しかし、私はAus / IndとInd / Ausを持っているので、目的を解決していません.1つを省略する必要がありますが、明確にすることはできません。

4

2 に答える 2

2
SELECT a.country country1, b.country country2
FROM   cric_country a
       CROSS JOIN cric_country b
WHERE  a.country < b.country
ORDER  BY a.country, b.country

出力

╔══════════╦══════════╗
║ COUNTRY1 ║ COUNTRY2 ║
╠══════════╬══════════╣
║ Aus      ║ Ind      ║
║ Aus      ║ NZ       ║
║ Ind      ║ NZ       ║
╚══════════╩══════════╝
于 2013-09-16T08:30:10.593 に答える
1

それは簡単です:

SELECT t1.country c1, t2.country c2
  FROM cric_country t1 JOIN cric_country t2 ON t1.id > t2.id;
于 2013-09-16T08:43:35.783 に答える