我有两个具有相似数据的表,我需要查询表的并集。我已经改变了我用来表示问题的实际表名:
SELECT
UORD.ORDER_NUM
FROM
(SELECT ORDER_ID, ORDER_NUM, PKG_ID
FROM ORDER
UNION ALL
SELECT ORDER_ID, ORDER_NUM, PKG_ID
FROM AMENDING_ORDER) UORD
INNER JOIN PLAN ON PLAN.PKG_ID = UORD.PKG_ID;
我得到了
由于ORA-00918:列模糊定义
INNER JOIN
上的PKG_ID
导致错误。
我的实际查询在订单商品上有多个连接,最初我只使用第一个表开始,例如ORDER
,效果很好。
是否有任何方法可以在查询中定义这种表联合,这样就不会有歧义?
答案 0 :(得分:0)
您可以尝试使用表名(别名)为列名添加前缀以更明确:
SELECT
UORD.ORDER_NUM
FROM
(SELECT O.ORDER_ID, O.ORDER_NUM, O.PKG_ID
FROM ORDER O
UNION ALL
SELECT AO.ORDER_ID, AO.ORDER_NUM, AO.PKG_ID
FROM AMENDING_ORDER AO) UORD
INNER JOIN PLAN ON PLAN.PKG_ID = UORD.PKG_ID;
答案 1 :(得分:0)
我已经对数据进行了进一步的实验,并且是导致问题的一些特定列。
表中的数据类型都是相同的,但DBA允许相同的列在一个表中是NULLABLE而不是另一个。
我要求他改变这一点,因为我几乎可以肯定这是错误的,我认为这将解决问题。