当前位置: 首页 > 知识库问答 >
问题:

Oracle SQL列与UNION ALL定义不明确

施冠玉
2023-03-14

我有两个数据相似的表,我需要查询表的并集。我更改了实际使用的表名,只是为了说明这个问题:

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\u ID上的内部连接导致错误。

我的实际查询还有几个关于订单项的连接,最初我只使用第一个表,例如,Order,效果很好。

有没有什么方法可以在查询中定义这个表的并集,使其不含糊?

共有2个答案

淳于升
2023-03-14

我对数据进行了进一步的实验,是一些特定的专栏引起了这个问题。

跨表的数据类型都是相同的,但DBA允许相同的列在一个表中为null,而不是在另一个表中为null。

我将要求他改变这一点,因为我几乎可以肯定这是错误的,我认为这将解决这个问题。

丁阳羽
2023-03-14

您可以尝试使用表名(别名)作为列名的前缀,使其更加明确:

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;
 类似资料:
  • 一般在写C++相关代码的时候,我们总习惯于将类声明和类实现进行分离。也就是说,类的声明一般写在.h文件中,而它的实现一般写在.cpp文件中。但是,在模板类中,这个习惯却要恰恰相反。即:要求模板类的类声明和类实现要都放在头文件,而不能分离。 本文就对模板的这个奇特习惯进行分析。 分离式编译模式 在进行模板特性的讲解之前,首先需要了解一下C++的分离式编译模式。 所谓分离编译模式,就是指:一个程序或者

  • 因此,我在使用多个临时表生成查询时遇到了一些问题。 首先,我创建了临时表。 然后我写下我的查询如下。这似乎是一个简单的查询。然而,我得到了错误“ORA-00918:列定义不明确”。我不知道是否可以连接这两个临时表,尤其是它们没有任何关系。我只想查询唯一id在DIDV表中的位置,以及标题和注释列不包含KEW字段的位置。 感谢您对理解这一点的任何帮助。 如果需要任何澄清,请告诉我。

  • 我正在Celero git存储库中检查DoNotOptimizeAway的含义。但我还是不明白。请你用外行的话帮我理解一下好吗。尽你所能。

  • 问题内容: 我刚刚在Oracle中遇到了一个奇怪的行为,我希望它会提高ORA-00918,但事实并非如此。以该查询为例。 此查询从概念上讲是在查找具有禁用触发器的表的详细信息,但是请注意,这不是我要解决的问题。这个问题不是该查询,数据字典,视图或表所独有的。据我所知,它适用于任何一组表或视图(我尝试过的两个或三个)。 无论如何,尝试运行此查询,你会得到ORA-00918,因为两者并有一个名为列,从

  • 给定下面用Mockito模拟Scala类的代码,我会得到一个错误并且无法编译: 错误是: 对重载定义的引用不明确,类型为(x$1:class[common.testeable],x$2:org.Mockito.mocksettings)的对象Mockito中的方法mock和类型为(x$1:class[common.testeable],x$2:org.Mockito.stubbing.answhe

  • 我正在考虑将Auth0用于我的API和web应用程序,并进行查询。生成Jwt令牌时,我希望包含一些仅存在于我的用户数据库中的自定义用户声明。这是可能的,还是所有声明都需要作为Auth0中的预定义属性存在。 我有自己的用户数据库,因为我需要在那里存储一些动态和复杂的用户权限。我意识到一个选择是不将这些权限存储在令牌中,我可以有一个单独的api来获取它们,但是为了性能和简单性,我宁愿将它们包装到Jwt