私のクエリは次のとおりです。
select ab.ID, cd.code_text
from city ab, codes cd
where ab.code = cd.code;
しかし、重複した値を返します。したがって、code_text 列で個別に使用する必要があります。code_text 列のこの条件で、distinct を使用する方法を教えてもらえますか?
Microsoft Access の場合:
SELECT ab.ID, cd.code_text
FROM city ab, (
SELECT DISTINCT codes.code, codes.code_text
FROM codes
) AS cd
WHERE ab.code = cd.code
個別の cd.code_text、ab.ID を都市 ab から選択し、コード cd で ab.code = cd.code;
編集済み
Select ID, "Code Text" From (
Select ID, "Code Text", RANK() OVER (PARTITION BY "Code Text" ORDER BY ID) "The Rank"
From(
select ab.ID as "ID", cd.code_text as "Code Text"
from city ab, codes cd
where ab.code = cd.code))
where "The Rank" = 1
コード テーブルから code_text の個別の値を確認したいだけの場合、最も簡単な方法は次のとおりです。
select distinct code_text from codes
コードが市テーブルに存在するコード テーブルから code_text の個別の値を確認する場合、最も簡単な方法は次のとおりです。
select distinct cd.code_text
from city ab
join codes cd on ab.code = cd.code
- ただし、Oracle でのより効率的な方法は次のとおりです。
select distinct cd.code_text
from codes cd
where exists
(select 1 from city ab where ab.code = cd.code)
対応する ID の値が最も小さい code_text の個別の値を表示する場合、最も簡単な方法は次のとおりです。
select min(ab.ID), cd.code_text
from city ab
join codes cd on ab.code = cd.code
group by cd.code_text
特定の code_text 値ごとに、該当するすべての ID 値を同じ行の 1 つの文字列に詰め込みたい場合、Oracle 11 で最も簡単な方法は次のとおりです。
select listagg(ab.ID, ',') within group (order by ab.ID) IDs, cd.code_text
from city ab, codes cd
where ab.code = cd.code
group by cd.code_text