[英]Insert by select statement -oracle
我只是试图将一列的值复制到另一张表的空列中。 这两个表是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
我尝试推理,也许是由于在两个表中插入的条目数量不同,但是使no相等。 两个表中的项的总和,结果相同。
所以问题是,在这种情况下我该如何复制 ?
您的要求不太清楚,但这会在PAYMENTS表中用匹配付款的总和填充STUDENTS表。 这是你所追求的吗?
UPDATE STUDENTS
SET AMOUNT = (SELECT SUM(PAYMENTS.AMOUNTS)
FROM PAYMENTS
WHERE PAYMENTS.RNO = STUDENTS.RNO);
您不想将记录添加到Student表(这是INSERT
所做的),而您想UPDATE
现有记录。
我对Oracle语法不是很熟悉,但是我通过在Oracle上进行内部联接对这个问题Update语句的答案进行了调整,以期满足您的需求。
UPDATE students
SET students.amount = (SELECT payments.amount
FROM payments
WHERE students.rno = payments.rno)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.