我有两个数据相似的表,我需要查询表的联合。我更改了我正在使用的实际表名,只是为了说明这个问题:
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:列定义不明确
由于PKG_ID
上的INNER JOIN
而出错。
我的实际查询在订单项上还有几个连接,最初我只使用第一个表,例如ORDER
,它工作得很好。
有没有办法在Query中定义这种表的联合,这样它就不会有歧义?
3条答案
按热度按时间sdnqo3pr1#
您可以尝试更明确地使用表名(别名)作为列名的前缀:
lnxxn5zx2#
我对这些数据进行了进一步的试验,发现是一些特定的列导致了这个问题。
表中的数据类型都相同,但是DBA允许相同的列在一个表中为NULLABLE,而在另一个表中不为NULLABLE。
我会要求他改变这一点,因为我几乎可以肯定这是错误的,我认为这会解决这个问题。
6yjfywim3#
这在这里并不重要,但对于任何有相同错误并且已经验证了上面的场景并没有问题的人来说,可能是因为从同一个表中选择了两次列。