【问题标题】:insert values into a table from column names of 2 or different tables?从 2 个或不同表的列名中将值插入表中?
【发布时间】:2012-08-28 02:20:00
【问题描述】:

请帮我解决这个问题。

  1. 表 t1 具有“t1c1”和“t1c2”列。

  2. 表 t2 具有“t2c2”和“t2c2”列。

我必须将值插入到具有 "t3c1","t3c2",t3c3" 列的 t3 表中。

条件是“t3c2”列值应从“t1c2”列填充,“t3c3”列应从“t2c2”列填充,“t3c1”应从游标值填充。

有人可以帮忙吗?这可能吗?

【问题讨论】:

    标签: mysql oracle oracle11g sqlplus


    【解决方案1】:

    这应该可行:

    INSERT INTO t3 (t3c1, t3c2, t3c3)
    SELECT currval, t1.t1c2, t2.t2c2
    FROM t1, t2;
    

    如果您只需要匹配t1t2中的某些行,您可以添加:

    WHERE t1.t1c1 = 'value'
      AND t2.t2c1 = 'value';
    

    【讨论】:

    • hi benjamin...除了应该是光标值的 t3c1 列之外,所有内容都是正确的...如何使用光标值插入该列
    • @kattashri 抱歉,我不擅长 Oracle,除此之外我无能为力!
    【解决方案2】:
    insert into t3(t3c1,t3c2,t3c3) 
        (select curval,t1.t1c2,t2.t2c2 from t1 left outer join t2 on t1.col=t2.col)
    

    【讨论】:

      【解决方案3】:

      如果我理解你的问题,我现在不明白。 可能 SQL 中的某些代码会比其他描述更好。如果我不明白你有这种看法

      CREATE VIEW t3 as SELECT t1c2 AS t3c2, t2c2 AS t3c3, rowid (oid ... or something) AS t3c1 FROM t1,t2 WHERE ....
      

      那你就可以触发INSTEAD OF

      CREATE TRIGGER t3_insert INSTEAD OF INSERT ON t3 AS BEGIN
        INSERT t1 .... VALUES (NEW.t3c1 .....)
        .......   
      END;
      

      或者如果 t3 是常规表,并且您想修改 t3 中的数据,则使用触发器 AFTER INSERT (UPDATE,DELETE)

      再具体一点,你会得到更好的解决方案。

      【讨论】:

      • ya t3 是一个常规表,我没有尝试修改 t3 表,而是尝试填充 t3 表,其中它的列是另一个表的值,其中一个列是游标值跨度>
      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多