返回唯一行并摆脱Oracle SQL查询中的多余行

问题描述

我有一个oracle查询,通常给我三行结果。两个是相同的,而第三个只是多余的一行。如何修改此查询以仅获得唯一结果。这是查询语句:

select prt.oid,it.itemname,it1.itemname,prt1.oid from jrtp_rdb.jrtepartoccurrence prt
join jrtp_rdb.jnameditem it on it.oid = prt.oid
join jrtp_rdb.xdistribports x on x.oidorigin = prt.oid
join jrtp_rdb.xflowports x1 on x1.oiddestination = x.oiddestination
join jrtp_rdb.xgeneratesconnectionitems x2 on x2.oidorigin= x1.oidorigin
join jrtp_rdb.xownsimplieditems x3 on x3.oiddestination = x2.oiddestination
join jrtp_rdb.jnameditem it1 on it1.oid = x3.oidorigin
join jrtp_rdb.jrtepartoccurrence prt1 on prt1.oid = it1.oid
where prt.oid in
('00013885000000004C00426DEC534269');

结果显示在下表中:

00013885000000004C00426DEC534269    Flange-120491   Gate Valve-65650    0001388500000000AB3BEAC87354D9BE
00013885000000004C00426DEC534269    Flange-120491   Gate Valve-65650    0001388500000000AB3BEAC87354D9BE
00013885000000004C00426DEC534269    Flange-120491   Flange-120491       00013885000000004C00426DEC534269

在这种情况下,我只需要第一行,因为它给出了连接到闸阀的法兰的名称。如何修改查询以仅获取唯一行并摆脱多余的第三行?

解决方法

查找重复项的最简单方法是添加唯一的行标识符,例如在实际物理表的情况下添加ROWID:

select prt.oid,it.itemname,it1.itemname,prt1.oid,count(distinct  prt.rowid)  prt_cnt,count(distinct   it.rowid)   it_cnt,count(distinct    x.rowid)    x_cnt,count(distinct   x1.rowid)   x1_cnt,count(distinct   x2.rowid)   x2_cnt,count(distinct   x3.rowid)   x3_cnt,count(distinct  it1.rowid)  it1_cnt,count(distinct prt1.rowid) prt1_cnt
from jrtp_rdb.jrtepartoccurrence prt
join jrtp_rdb.jnameditem it 
     on it.oid = prt.oid
join jrtp_rdb.xdistribports x 
     on x.oidorigin = prt.oid
join jrtp_rdb.xflowports x1 
     on x1.oiddestination = x.oiddestination
join jrtp_rdb.xgeneratesconnectionitems x2 
     on x2.oidorigin= x1.oidorigin
join jrtp_rdb.xownsimplieditems x3 
     on x3.oiddestination = x2.oiddestination
join jrtp_rdb.jnameditem it1 
     on it1.oid = x3.oidorigin
join jrtp_rdb.jrtepartoccurrence prt1 
     on prt1.oid = it1.oid
where prt.oid in
('00013885000000004C00426DEC534269')
group by prt.oid,prt1.oid;
,

如何?

select distinct prt.oid,prt1.oid from jrtp_rdb.jrtepartoccurrence prt
join jrtp_rdb.jnameditem it on it.oid = prt.oid
join jrtp_rdb.xdistribports x on x.oidorigin = prt.oid
join jrtp_rdb.xflowports x1 on x1.oiddestination = x.oiddestination
join jrtp_rdb.xgeneratesconnectionitems x2 on x2.oidorigin= x1.oidorigin
join jrtp_rdb.xownsimplieditems x3 on x3.oiddestination = x2.oiddestination
join jrtp_rdb.jnameditem it1 on it1.oid = x3.oidorigin
join jrtp_rdb.jrtepartoccurrence prt1 on prt1.oid = it1.oid
where prt.oid in
('00013885000000004C00426DEC534269') and prt.oid<>prt1.oid
,

您可以尝试这个

event: Class
altKey: (...)
bubbles: (...)
button: (...)
buttons: (...)
cancelable: (...)
clientX: (...)
clientY: (...)
ctrlKey: (...)
currentTarget: (...)
defaultPrevented: (...)
detail: (...)
dispatchConfig: null
eventPhase: (...)
getModifierState: (...)
isDefaultPrevented: (...)
isPropagationStopped: (...)
isTrusted: (...)
metaKey: (...)
movementX: (...)
movementY: (...)
nativeEvent: (...)
pageX: (...)
pageY: (...)
relatedTarget: (...)
screenX: (...)
screenY: (...)
shiftKey: (...)
target: (...)
timeStamp: (...)
type: (...)
view: (...)
_dispatchInstances: null
_dispatchListeners: null
_targetInst: null
preventDefault: (...)
stopPropagation: (...)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...