Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 查询帮助:使用最大ID获取一次重复值_Oracle - Fatal编程技术网

Oracle 查询帮助:使用最大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

在下面的查询中,我希望对于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);
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'
是正确的。