如何从两个不同的表中将值A从列A插入到列B

时间:2018-06-14 14:04:03

标签: sql oracle

在SQL Oracle中,我想在列B中的值(来自表T1)中插入(来自表T2)

我收到了以下要求:

INSERT INTO schema.T1(A)
        SELECT B FROM schema.T2;

我遇到以下错误:

  

ORA-00904“B”无效的标识符

当我检查表T2中的内容时:

SELECT * FROM schema.T2

我可以清楚地看到有一个带有值的B列......

我已经检查过:

  • 数据类型相同

  • 数据可以为空

  • 没有约束例外

所以当我启动它时,例如:

SELECT * FROM schema.t2 WHERE column1=1

甚至

SELECT column1 FROM schema.t2

它有效,但当我这样做时:

SELECT B FROM schema.t2

SELECT * FROM schema.t2 WHERE B = ...

它不起作用,除了第一个列之外,表T2中的所有列都是相同的。

感谢您抽出时间提供帮助

修改

如果在那些需要双引号的列上添加触发器,它将无效(它对我不起作用)。无法识别该列,触发器将丢弃错误。我将进一步研究解决这个问题。

2 个答案:

答案 0 :(得分:4)

我找到了解决办法......这很简单,但我不知道这个伎俩。

如果出现此类错误,可以通过在列名称上添加双引号来解决。列名称只能是字母数字字符和特殊字符$,_。

如果它包含其他字符,则必须用双引号括起来。

所以它看起来像这样:

INSERT INTO schema.T1(A) SELECT "B" FROM schema.T2;

然后它完美无缺!

感谢您的帮助! : - )

答案 1 :(得分:-1)

T2中不存在

B.您将需要创建它或找出实际上与您期望的B对应的列。