我的查询是:Sql选择不同的一列和两个表的结果?
select ab.ID, cd.code_text
from city ab, codes cd
where ab.code = cd.code;
但其返回重复值。 所以我必须在code_text列上使用distinct。 有人能帮助我如何在code_text列上使用不同的条件吗?
我的查询是:Sql选择不同的一列和两个表的结果?
select ab.ID, cd.code_text
from city ab, codes cd
where ab.code = cd.code;
但其返回重复值。 所以我必须在code_text列上使用distinct。 有人能帮助我如何在code_text列上使用不同的条件吗?
选择不同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
这在大多数SQL方言中都是有效的,但在Microsoft Access下,'DISTINCT'不能用这种方式。 –
@ Blood-HaZaRd:不工作。这将基于两列给出不同的记录。 – Peter
你可以给你的表的一些数据输入,所以我可以看到你想要的结果是什么?或者至少有一张表,说明你的结果和你想要的结果。 –
在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
不工作。我正在使用Oracle 11g,但它不工作。它给错误:ORA-00933:SQL命令没有正确结束 – Peter
我不熟悉Oracle,但请定义“不工作”。 –
你最后需要';'吗? –
如果你只是想看看从码表,要做到这一点是最简单的方法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
- 虽然在甲骨文更有效的方式可能是:
select distinct cd.code_text
from codes cd
where exists
(select 1 from city ab where ab.code = cd.code)
如果你想看到code_text的不同值与ID,做最简单的方法的相应最低值这将是:
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值,在甲骨文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
首先,在哪些列你在决定在code_text列上使用不同的值之前是否有重复的值? code_text列中的 –
。这就是为什么我想在code_text列上使用distinct。 – Peter
从您对某些答案的评论看来,您似乎对每个code_text值可能有许多有效的城市ID值,但您只希望看到code_text一次。你想用ID值做什么?我们可以将它们从查询中完全删除吗?如果没有,您是否希望查看最大或最小的相应ID值,是否想要在同一行中查看所有可用的ID值填入单个字符串,或者您是否有其他方式处理ID值? –