从2个或不同表的列名中将值插入表中?

时间:2012-09-03 10:43:13

标签: mysql oracle oracle11g sqlplus

请帮我解决此问题。

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

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

  3. 我必须在t3表中插入值为“t3c1”,“t3c2”,t3c3“列。

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

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

3 个答案:

答案 0 :(得分:2)

这应该有效:

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

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

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

答案 1 :(得分:0)

insert into t3(t3c1,t3c2,t3c3) 
    (select curval,t1.t1c2,t2.t2c2 from t1 left outer join t2 on t1.col=t2.col)

答案 2 :(得分:0)

如果我理解你的问题,我现在不行。 可能是SQL中的一些代码会比其他desctiption更好。如果我不明白你有这个观点

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

然后你可以制作一个triger 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)

更具体地说,您可以获得更好的解决方案。

相关问题