-4

我的查询是:

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

但它返回重复值。所以我必须在 code_text 列上使用 distinct 。有人可以帮我在这种情况下如何在 code_text 列上使用 distinct 吗?

4

3 回答 3

1

select distinct cd.code_text, ab.ID from city ab, codes cd where 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 回答
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 回答
0

如果您只想从代码表中查看 code_text 的不同值,最简单的方法是:

select distinct code_text from codes

如果您想从代码表中查看不同的 code_text 值,其中代码存在于 city 表中,最简单的方法是:

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 值,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 回答