我只是想将一列的值复制到另一个表的空列中。
这两个表格为students
和payments
。
学生有两列:
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。两个表中的条目,只是相同的结果。
所以问题是如何在这种情况下复制?
答案 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)