内部连接错误

Posted

技术标签:

【中文标题】内部连接错误【英文标题】:Error in Inner Joins 【发布时间】:2018-04-17 04:26:38 【问题描述】:

我正在尝试练习内部联接,但徒劳无功。即使我已经创建了表并且存在数据,在执行内部联接语句时我也得到表不存在错误

请帮我解决这个问题。此外,它显示客户与连接图的其余部分断开连接。

我曾尝试在表名中使用双引号,但随后会出现与

不同的错误

ORA-00904: "CUSTOMERS"."CUSTOMER_ID": 无效标识符 00904. 00000 - “%s:无效标识符” *原因: *行动:

SELECT
    Orders.OrderID,
    Customers.CustomerName
FROM
    Orders
    inner join Customers on Orders.Customer_Id = Customers.Customer_Id;

它的Oracle 11gSYS 是所有者。

【问题讨论】:

错误信息显示Customer_Id 是无效标识符。您确定这就是该列的名称吗?我看到您的另一列名为OrderID(不带下划线),所以可能改为CustomerID Customers中是否有一列名为Customer_Id 你宁愿停止做你现在正在做的事情。为测试目的创建另一个用户,不理会 SYS。 我的两张表如下 创建表“Customers”(Customer_Id Number(25), CustomerName varchar2(35), Address varchar2(30), City varchar2(25)); NEVERever 在 SYS 或 SYSTEM 帐户中创建您自己的表。创建一个普通用户来执行此操作。请在日常工作中使用 SYS 帐户。只是不要 【参考方案1】:

问题可能是由于您的create table 语句包含双引号的表名,不是全部为大写。请记住,默认情况下,oracle 始终以大写形式存储表名和列名,除非您在 create/Alter 语句中使用了大小写不同的双引号字符串。应避免使用整个表名来引用列,因为这就是原因对于您的情况,invalid identifier 错误。

因此,如果可以,请将表从"Customers" 重命名CUSTOMERS"Orders"ORDERS,或者在选择查询中使用引号和适当的别名来表示表名.

SELECT
    o.OrderID,
    c.CustomerName
FROM
    "Orders" o
    inner join "Customers" c on o.Customer_Id = c.Customer_Id;

此外,正如@horse 已经建议的那样,在任何示例架构(如 HR、SCOTT 等)中创建表,而不是在 SYS 中创建表。

【讨论】:

我将表重命名为 CUSTOMERS 和 ORDERS 并且我能够成功执行所有联接..非常感谢您的帮助 @RekhaRao:不客气。请阅读:***.com/help/someone-answers

以上是关于内部连接错误的主要内容,如果未能解决你的问题,请参考以下文章

Openfire 连接因内部错误而关闭

连接sql server2005时提示:内部连接致命错误。

MySql从内部连接更新语法错误

win10了远程桌面内部错误怎么解决方法

有没有办法防止python内部出现“连接错误”或“无网络”错误?

ORA-00257: 归档程序错误。在释放之前仅限于内部连接