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

SQLORA-00918:列定义不明确SQL开发人员

莘羽
2023-03-14

因此,我在使用多个临时表生成查询时遇到了一些问题。

首先,我创建了临时表。

CREATE GLOBAL TEMPORARY TABLE DIDV (DID VARCHAR(50))

INSERT INTO DIDV VALUES ('8090630909077434001');
INSERT INTO DIDV VALUES ('7471990179373590001');
INSERT INTO DIDV VALUES ('7605256906013877001');
INSERT INTO DIDV VALUES ('1604387368720407001');
INSERT INTO DIDV VALUES ('3512739534818409001');

CREATE GLOBAL TEMPORARY TABLE KEYW (KEW VARCHAR(50))

INSERT INTO KEYW VALUES ('%Corporate Insurance Pol%');
INSERT INTO KEYW VALUES ('%Tax Return%');
INSERT INTO KEYW VALUES ('%Audit%');
INSERT INTO KEYW VALUES ('%Corporate Governance%');
INSERT INTO KEYW VALUES ('%Board%');
INSERT INTO KEYW VALUES ('%Shareholder%');

然后我写下我的查询如下。这似乎是一个简单的查询。然而,我得到了错误“ORA-00918:列定义不明确”。我不知道是否可以连接这两个临时表,尤其是它们没有任何关系。我只想查询唯一id在DIDV表中的位置,以及标题和注释列不包含KEW字段的位置。

SELECT TO_CHAR(DID) DID, TO_CHAR(DROOTPARENTID) PARENTID, DBARCODE, 
DDOCTITLE, XCOMMENTS, XDIVISION, DEXTOBJECTTYPE
FROM PSA.URM_EXTITEMS_PSA, DIDV, KEYW
WHERE PSA.URM_EXTITEMS_PSA.DID = DIDV.DID 
AND PSA.URM_EXTITEMS_PSA.DDOCTITLE NOT LIKE KEYW.KEW 
AND PSA.URM_EXTITEMS_PSA.XCOMMENTS NOT LIKE KEYW.KEW;

感谢您对理解这一点的任何帮助。

如果需要任何澄清,请告诉我。

共有1个答案

司空赞
2023-03-14

一个表DIDV包含一个名为DID
的列,一个表URM_EXTITEMS_PSA还包含一个名为DID的列(我知道这一点是因为一个在哪里的条件包含一个子句WHERE PSA.URM_EXTITEMS_PSA. DIDV. DID)。

查询中的select语句包含一个引用列DID的表达式

SELECT TO_CHAR(DID) ....

Oracle真的不知道(我也不知道)您想获取哪个DIDV结果-来自DIDV表的'DO'列或来自URM_EXTITEMS_PSA表的DIDV列。因此Oracle抛出错误ORA-00918:列定义模糊

只需将别名附加到select子句中的这个DIV列,即DIDV或URM\u EXTITEMS\u PSA,如下所示:

SELECT TO_CHAR(DIDV.DID) ....

我知道WHERE子句包含PSA。URM_EXTITEMS_PSA. DO=DIDV. DO,实际上两个DO是相等的,所以Oracle应该足够聪明,可以说哦,是的,他写了PSA。URM_EXTITEMS_PSA. DO=DIDV. DO,所以我可以从任何表......
不幸的是,Oracle并不那么聪明(也许他们在新版本中改进了这一点?),现在您必须附加一个别名或表名。

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

  • 我有两个数据相似的表,我需要查询表的并集。我更改了实际使用的表名,只是为了说明这个问题: 我得到 ORA-00918:列定义模糊 由于PKG\u ID上的内部连接导致错误。 我的实际查询还有几个关于订单项的连接,最初我只使用第一个表,例如,,效果很好。 有没有什么方法可以在查询中定义这个表的并集,使其不含糊?

  • 在最新的3.9更新之后,jOOQ似乎正在使用新的Oracle12cRow_limiting_子句进行行限制,而不是使用旧的“rownum”语法。这导致在Oracle 12c中,在具有匹配列名的联接表上出现“ORA-00918:定义不明确的列”。 然而,根据甲骨文的文件[1],新条款, 如果select列表包含名称相同的列,并且您指定了row_limiting_子句,则会发生ORA-00918错误。

  • 我正在定制Azure APIM开发人员门户。对于非生产环境,如Dev、QA等,我使用相同的APIM实例。但API名称不同。我想按名称对它们进行分组,以便首先看到与开发相关的所有API,然后再看到与其他环境相关的API。有什么办法可以实现吗?此外,我们有一个模板称为API列表,我们可以自定义。我们是否可以从该模板创建多个页面,以便为每个环境创建不同版本的API列表?

  • 给定下面用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

  • 问题内容: 我有: MySql输出:“列’price’的列说明符不正确 为什么是这样? 问题答案: 指定数据类型时无效。 您可以在括号忽略值,例如只是有本身或指定使用类似的括号内的数值(见本的信息,什么样的价值观是说......你可能需要这些取决于什么你打算定制存储在列中)