按选择语句-oracle插入

时间:2012-02-26 21:17:27

标签: sql oracle insert oracle11g

我只是想将一列的值复制到另一个表的空列中。 这两个表格为studentspayments学生有两列:

  • rno - 数字类型// i filled it with some entries

  • 的主键
  • 金额//this is completely empty

付款也有相同的列数:

  • rno - 外键引用学生表rno

  • 金额//this is FILLED

现在要将amounts从付款复制到学生,我试过这个命令

insert into students(amount) select amount from payments ;

现在通常这个命令就像魅力一样,但在这里它的表现略有不同。它抛出一个错误 NULL values cannot be inserted into students.rno

我尝试过推理可能是由于两个表中插入了不同数量的条目,但是在eqalizing no。两个表中的条目,只是相同的结果。

所以问题是如何在这种情况下复制

2 个答案:

答案 0 :(得分:2)

您的要求不太清楚,但这会在PAYMENTS表中使用匹配付款的SUM填充STUDENTS表。这就是你要追求的吗?

UPDATE STUDENTS
SET    AMOUNT = (SELECT SUM(PAYMENTS.AMOUNTS)
                 FROM   PAYMENTS
                 WHERE  PAYMENTS.RNO = STUDENTS.RNO);

答案 1 :(得分:1)

您不希望将记录添加到学生表(这是INSERT所做的UPDATE现有记录。

我对Oracle语法不是很熟悉,但我调整了这个问题Update statement with inner join on Oracle的答案,以满足您的需求。

UPDATE students
SET    students.amount = (SELECT payments.amount
                          FROM   payments
                          WHERE  students.rno = payments.rno)