申請できるはずですrow_number()
。ただし、使用するrow_number
場合は、提供する必要のある注文があります。
この最初の例では順序を使用してusage
いますが、問題は、表の最初の順序ではなく、アルファベット順になることです。
select alphabet, usage
from
(
select t1.alphabet,
t2.usage,
row_number() over(partition by t1.alphabet order by t2.usage) rn
from table1 t1
inner join table2 t2
on t1.alphabet = t2.alphabet
) src
where rn =1
SQL FiddlewithDemoを参照してください。
最初に入力した順序を保証する数値IDフィールドがない場合。次を使用できる場合があります。
select alphabet, usage
from
(
select t1.alphabet,
t2.usage,
row_number() over(partition by t1.alphabet order by (select 1)) rn
from table1 t1
inner join table2 t2
on t1.alphabet = t2.alphabet
) src
where rn =1
SQL FiddlewithDemoを参照してください。
@Aaronがコメントで指摘しているように、この方法を使用してもその順序は保証されず、動作が変わる可能性があります。
理想的には、データの最初の出現を区別できるソートタイプの列、つまり日時、IDなどが必要です。テーブル内のデータには順序がないため、次を使用して順序を適用します。order by