繁体   English   中英

通过选择语句插入-oracle

[英]Insert by select statement -oracle

我只是试图将一列的值复制到另一张表的空列中。 这两个表是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

我尝试推理,也许是由于在两个表中插入的条目数量不同,但是使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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM