我的查询是:
select ab.ID, cd.code_text
from city ab, codes cd
where ab.code = cd.code;
但它返回的重复值。 所以我必须在code_text列上使用distinct。 有人可以帮我解决如何在code_text列上使用distinct这个条件吗?
答案 0 :(得分:1)
选择不同的cd.code_text,ab.ID
来自city 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
答案 1 :(得分: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
答案 2 :(得分: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值,那么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