Sql 两个表之间连接中的重复行

Sql 两个表之间连接中的重复行,sql,oracle,Sql,Oracle,我有以下代码: SET LINESIZE 2000; SET PAGESIZE 20; COL column_name FOR A40 col CONSTRAINT_NAME for a30; COL CONSTRAINT_OWNER FOR A20; col SEARCH_CONDITION for a35; SELECT A.OWNER||'.'||A.TABLE_NAME||'.'||B.COLUMN_NAME "COLUMN_NAME",B.POSITION,A.OW

我有以下代码:

SET LINESIZE 2000;
SET PAGESIZE 20;
COL column_name FOR A40
col CONSTRAINT_NAME for a30;
COL CONSTRAINT_OWNER FOR A20;
col SEARCH_CONDITION for a35;
SELECT A.OWNER||'.'||A.TABLE_NAME||'.'||B.COLUMN_NAME "COLUMN_NAME",B.POSITION,A.OWNER "CONSTRAINT_OWNER",A.CONSTRAINT_NAME,CASE CONSTRAINT_TYPE
WHEN 'P' THEN 'PRIMARY KEY'
WHEN 'C' THEN 'CHECK CONSTRAINT'
WHEN 'U' THEN 'UNIQUE KEY'
WHEN 'R' THEN 'REFERENTIAL INTEGRITY'
WHEN 'V' THEN 'CHECK OPTION - VIEW'
WHEN 'O' THEN 'READ ONLY - VIEW'
END AS CONSTRAINT_TYPE,SEARCH_CONDITION
FROM DBA_CONSTRAINTS A left JOIN DBA_CONS_COLUMNS B
ON A.CONSTRAINT_NAME=B.CONSTRAINT_NAME
WHERE A.OWNER = 'SOE'
AND A.TABLE_NAME = 'INVENTORIES'
--AND A.CONSTRAINT_NAME = 'CCAR_01_UK'
ORDER BY POSITION
/
但输出会带来重复的行:

COLUMN_NAME                                POSITION CONSTRAINT_OWNER     CONSTRAINT_NAME                CONSTRAINT_TYPE       SEARCH_CONDITION
---------------------------------------- ---------- -------------------- ------------------------------ --------------------- -----------------------------------
SOE.INVENTORIES.PRODUCT_ID                        1 SOE                  INVENTORY_PK                   PRIMARY KEY
SOE.INVENTORIES.WAREHOUSE_ID                      1 SOE                  INVENTORIES_WAREHOUSES_FK      REFERENTIAL INTEGRITY
SOE.INVENTORIES.PRODUCT_ID                        1 SOE                  INVENTORIES_PRODUCT_ID_FK      REFERENTIAL INTEGRITY
SOE.INVENTORIES.PRODUCT_ID                        1 SOE                  INVENTORY_PK                   PRIMARY KEY
SOE.INVENTORIES.WAREHOUSE_ID                      1 SOE                  INVENTORIES_WAREHOUSES_FK      REFERENTIAL INTEGRITY
SOE.INVENTORIES.PRODUCT_ID                        1 SOE                  INVENTORIES_PRODUCT_ID_FK      REFERENTIAL INTEGRITY
SOE.INVENTORIES.WAREHOUSE_ID                      2 SOE                  INVENTORY_PK                   PRIMARY KEY
SOE.INVENTORIES.WAREHOUSE_ID                      2 SOE                  INVENTORY_PK                   PRIMARY KEY
SOE.INVENTORIES.WAREHOUSE_ID                        SOE                  INVENTORY_WAREHOUSE_ID_NN      CHECK CONSTRAINT      "WAREHOUSE_ID" IS NOT NULL
SOE.INVENTORIES.QUANTITY_ON_HAND                    SOE                  INVENTORY_QOH_NN               CHECK CONSTRAINT      "QUANTITY_ON_HAND" IS NOT NULL
SOE.INVENTORIES.QUANTITY_ON_HAND                    SOE                  INVENTORY_QOH_NN               CHECK CONSTRAINT      "QUANTITY_ON_HAND" IS NOT NULL
SOE.INVENTORIES.WAREHOUSE_ID                        SOE                  INVENTORY_WAREHOUSE_ID_NN      CHECK CONSTRAINT      "WAREHOUSE_ID" IS NOT NULL

有人能帮我吗?这些表是和来自文档的

我假设这些是Oracle示例数据库/表?如果是这样,那么这些不是标准约束,所以我猜您/某人已经添加/修改了它们?如果是这样的话,看起来有些事情做得不正确,所以我会删除它们并重新应用它们-如果有必要,为什么不在您的选择上使用distinct?我已经尝试过了。我在第8行得到错误:ORA-00997:在列搜索中非法使用长数据类型。\u条件得到它。获取“搜索”条件有多重要“输出中的列?您能删除该列并在您的案例中使用distinct吗?我问的原因是Oracle中的长数据类型有很多限制。只需添加
和a.owner=b.owner
。此外,在实际支持的Oracle版本中,有
搜索条件\u vc
,这是varchar2列