oracle 多表多字段去重问题!

我要从两个表中查询多个字段,但是其中的某个字段重复的只显示一次!如何实现,如selecta.id,a.name,b.id,b.namefromAa,Bbwherea.id... 我要从两个表中查询多个字段,但是其中的某个字段重复的只显示一次!如何实现,

如select a.id ,a.name,b.id,b.name from A a ,B b where a.id = b.aid

试过distinct ,但是distinct是所有的字段重复才会去重,我只是当a.id相同时去重,如何实现! a.id 是18位字符串!

期待指点!
展开
 我来答
flyingFish211
2011-01-26 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
修正,你的b.id,应该是b.aid吧
下面这个当aid重复的时候,取a.name最小的,从而达到去掉重复。

SELECT id, name, aid, t.name
FROM (SELECT a.id, a.name, b.aid, b.name,
ROW_NUMBER() OVER(PARTITION BY a.id ORDER BY a.name) rk
FROM A a, B b WHERE a.id = b.aid) t
WHERE rk = 1
47522341
2011-01-26 · TA获得超过668个赞
知道小有建树答主
回答量:189
采纳率:0%
帮助的人:141万
展开全部
select * from
(
select a.id ,a.name,b.id bid,b.name bname,
row_number() over(partition by a.id order by rowid) r1
from A a ,B b
where a.id = b.aid
) t
where r1 = 1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2011-01-26 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3361万
展开全部
select
a.id ,
MAX(a.name),
b.id,
MAX(b.name)
from A a ,B b
where a.id = b.aid
GROUP BY a.id, b.id
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式