-4

私のクエリは次のとおりです。

  select ab.ID, cd.code_text  
  from city ab, codes cd 
  where ab.code = cd.code;

しかし、重複した値を返します。したがって、code_text 列で個別に使用する必要があります。code_text 列のこの条件で、distinct を使用する方法を教えてもらえますか?

4

3 に答える 3

1

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
于 2013-03-29T08:26:48.280 に答える
1

個別の 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
于 2013-03-29T08:05:06.127 に答える
0

コード テーブルから 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
于 2013-03-29T10:16:40.563 に答える