Oracle 查询帮助:使用最大ID获取一次重复值
在下面的查询中,我希望对于ID的最大值(本例中为2),CPNY_ID只出现一次。最好不要使用任何子查询 --编辑开始Oracle 查询帮助:使用最大ID获取一次重复值,oracle,Oracle,在下面的查询中,我希望对于ID的最大值(本例中为2),CPNY_ID只出现一次。最好不要使用任何子查询 --编辑开始 如果我可以重新表述我的问题,如果,当我将表t_ref与表t_main连接时,我从表t_ref中获得了多个匹配项。我只希望t_ref与最大ID值匹配。 --编辑完成 你能建议更好的选择吗 create table t_main (id number, org_id number, aid number); insert into t_main values(1,100,10); i
如果我可以重新表述我的问题,如果,当我将表t_ref与表t_main连接时,我从表t_ref中获得了多个匹配项。我只希望t_ref与最大ID值匹配。 --编辑完成 你能建议更好的选择吗
create table t_main (id number, org_id number, aid number);
insert into t_main values(1,100,10);
insert into t_main values(2,200,20);
insert into t_main values(3,300,30);
create table t_ref (id number, cpny_id number, bid number);
insert into t_ref values(1,100,10);
insert into t_ref values(2,100,20);
insert into t_ref values(3,300,30);
insert into t_ref values(4,500,40);
commit;
select a.id, a.org_id, b.cpny_id from t_main a inner join t_ref b on a.aid = b.bid;
--Result
ID ORG_ID CPNY_ID
1 100 100
2 200 100
3 300 300
问候。试试这个:
SELECT MAX(a.id), MAX(a.org_id), b.cpny_id
FROM t_main a
INNER JOIN t_ref b
ON a.aid = b.bid
GROUP BY b.cpny_id
谢谢,这很有效。我还有一个问题。如果ORG_ID具有字符串值而不是数字,该怎么办?如果我可以重新表述我的问题,当我将表t_ref与表t_main联接时,我从表t_ref获得多个匹配项。我只想从t_ref匹配最大ID值。您必须为此提供一些示例数据。顺便说一句,Max将处理字符串值。如果我没有错,Max on string value将按字母顺序操作。不管怎样,谢谢你早些时候的回答。“Max将按字母顺序工作”不完全正确
MAX()
针对字符串的操作以ASCII顺序进行。所以这是真的-'C'>'B'
-这也是真的'a'>'B'
。当然,如果您处理的是字母数字字符串,请记住'2'>'11'
是正确的。