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

ORA 00904具有左/右外部联接的无效标识符

劳华灿
2023-03-14

我有这样的疑问:

SELECT *
FROM table1 LEFT OUTER JOIN table2
ON table1.id=table2.c_id

这给了我一个错误

ORA-00904"table2.c_id"无效标识符

问题是,查询与完全外部连接和内部连接一起工作-没有错误。就连这一条也行:

SELECT *
FROM table1, table2
WHERE table1.id=table2.c_id(+)

错误仅发生在右或左外部联接上,并且仅发生在测试db上。

两个表都在分区。

生产数据库,其中查询运行完美-Oracle Database 11g Enterprise Edition 11.2.0.3.0版-64位生产

测试数据库,其中查询失败-Oracle Database 11g Enterprise Edition 11.2.0.4.0版-64位生产

两个数据库上的表配置相同。

有什么建议吗?

共有2个答案

慕铭
2023-03-14

你能试试这个吗

 SELECT table1.* ,table2.*
 FROM table1 LEFT OUTER JOIN table2
 ON table1.id=table2.c_id
邬浩涆
2023-03-14

我认为SQL没有任何问题。

在我的12c数据库上,没有问题:

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> create table x(id number);

Table created.

SQL> create table y(c_id number);

Table created.

SQL> insert into x values(1);

1 row created.

SQL> insert into y values(1);

1 row created.

SQL> insert into y values(2);

1 row created.

SQL> SELECT *
  2  FROM y LEFT OUTER JOIN x
  3  ON x.id=y.c_id;

      C_ID         ID
---------- ----------
         1          1
         2

在11GR2上,请看这个SQL小提琴。

 类似资料:
  • 我需要从中选择所有行,如果选择位置子句匹配,则从中选择匹配这是我的外部与子查询,但它失败了。有人可以帮忙吗?

  • 问题内容: 我有三个表: 命令 OrderId,int PK CustomerId,与客户之间为int FK,允许为NULL 顾客 CustomerId,int PK CompanyId,将FK转换为Company,不允许为NULL 公司介绍 CompanyId,int PK 名称nvarchar(50) 我想选择所有订单,无论是否有客户,如果有客户,也要选择客户的公司名称。 如果我使用此查询…

  • 从SQL查询返回任何结果时遇到一些问题。我很确定这和WHERE条件有关。 我只想返回某些RULE\u ID。我通过表1中的RULE\u名称来标识RULE\u ID。然后,我将TABLE1和TABLE2连接起来,并说如果RULE\u ID的列日期等于20年3月5日,而COLUMN3列不为null,则返回RULE\u ID。 目前,我没有得到这个查询的任何结果,我也不完全清楚为什么。任何帮助都将不胜感

  • 问题内容: 我有一个网站,用户可以在其中查看电影列表,并为其创建评论。 用户应该能够看到所有电影的列表。此外,如果他们查看了电影,则他们应该能够看到他们给它的评分。如果不是,则仅显示没有得分的电影。 他们根本不在乎其他用户提供的分数。 考虑以下 我本质上想要的是 考虑以下内容: 两个测试都应打印完全相同的输出,但是,只有原始版本会吐出正确的结果表: orm会返回这个 任何试图加入其余主题的尝试,那

  • 问题内容: 我在基于放置过滤条件的位置的查询中基于过滤条件得到不同的结果。我的问题是: 这些查询之间在技术上有区别吗? SQL标准中是否有任何内容可以解释与查询不同的记录集? 在简化的情况下: 我以为查询将返回相同的结果集,而当它们没有返回时,我感到很惊讶。我使用的是MS SQL2005,在实际查询中,查询1返回了约700行,查询2返回了约1100行,但我无法检测到返回行和排除行的模式。查询1中仍

  • 如何在中实现或。一个简单的例子很有帮助。