代码之家  ›  专栏  ›  技术社区  ›  LPK

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

  •  1
  • LPK  · 技术社区  · 7 年前

    在sql oracle中,我想在列a(来自表t1)中插入列b(来自表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 回复  |  直到 7 年前
        1
  •  4
  •   LPK    7 年前

    我找到了解决办法。很简单,但我不知道诀窍。

    当出现这种错误时,可以通过在列名上添加双引号来解决。列名只需使用字母数字字符和特殊字符$,。

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

    看起来是这样的:

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

    然后它就完美地工作了!

    谢谢你的帮助!!!!-)

        2
  •  -1
  •   Lajos Arpad    7 年前

    T2中不存在B。你要么需要创建它,要么找出哪个列实际上对应于你期望的b。