Sql 按select语句插入-oracle
我只是想把一列的值复制到另一个表的空列中。 这两个表是Sql 按select语句插入-oracle,sql,oracle,insert,oracle11g,Sql,Oracle,Insert,Oracle11g,我只是想把一列的值复制到另一个表的空列中。 这两个表是学生和付款。 学生有两列: rno-数字类型的主键//我用一些条目填充了它 金额//这是完全空的 付款也有相同的列数: rno-引用students表的rno的外键 金额//此项已填写 现在,为了从支付给学生的款项中复制金额列,我尝试了以下命令 插入学生(金额)从付款中选择金额 现在,通常这个命令就像一个符咒,但在这里它的行为略有不同。它抛出了一个错误 NULL值不能插入学生。rno 我试着推断可能是因为两个表中插入的条目数量不同,但
学生
和付款
。
学生有两列:
- rno-数字类型的主键
//我用一些条目填充了它
- 金额
//这是完全空的
- rno-引用students表的rno的外键
- 金额<代码>//此项已填写
金额
列,我尝试了以下命令
插入学生(金额)从付款中选择金额代码>
现在,通常这个命令就像一个符咒,但在这里它的行为略有不同。它抛出了一个错误
NULL值不能插入学生。rno
我试着推断可能是因为两个表中插入的条目数量不同,但是对no进行了eqa。对于两个表中的条目,结果完全相同
所以问题是在这种情况下如何复制?您不想将记录添加到students表中(这就是插入的内容)您想更新现有记录
我不太熟悉Oracle语法,但我对这个问题的答案进行了调整,希望能满足您的需要
UPDATE students
SET students.amount = (SELECT payments.amount
FROM payments
WHERE students.rno = payments.rno)
您不想向students表中添加记录(这是INSERT
所做的),您想更新现有记录
我不太熟悉Oracle语法,但我对这个问题的答案进行了调整,希望能满足您的需要
UPDATE students
SET students.amount = (SELECT payments.amount
FROM payments
WHERE students.rno = payments.rno)
不太清楚您的要求,但这将使用payments表中匹配付款的总和填充STUDENTS表。这就是你想要的吗
UPDATE STUDENTS
SET AMOUNT = (SELECT SUM(PAYMENTS.AMOUNTS)
FROM PAYMENTS
WHERE PAYMENTS.RNO = STUDENTS.RNO);
不太清楚您的要求,但这将使用payments表中匹配付款的总和填充STUDENTS表。这就是你想要的吗
UPDATE STUDENTS
SET AMOUNT = (SELECT SUM(PAYMENTS.AMOUNTS)
FROM PAYMENTS
WHERE PAYMENTS.RNO = STUDENTS.RNO);
您的意思是只插入金额,还是希望在此处插入rno
,以便数据有意义?您的意思是只插入金额,还是希望在此处插入rno
,以便数据有意义?请注意,如果一个学生的付款超过1笔,则会出错。哦,这一点很好。出于某种原因,我认为这种关系是1:1。另外,谢谢你的编辑,我注意到后记是rno而不是mo;)@还有,有趣的是,这会抛出一个错误。如果我没有弄错的话,在SQL Server中,“最后”匹配将是更新中使用的值。我更喜欢甲骨文在这方面的做法。请注意,如果一个学生的付款超过1笔,这将是错误的。哦,这一点很好。出于某种原因,我认为这种关系是1:1。另外,谢谢你的编辑,我注意到后记是rno而不是mo;)@还有,有趣的是,这会抛出一个错误。如果我没有弄错的话,在SQL Server中,“最后”匹配将是更新中使用的值。我更喜欢甲骨文公司在这方面的表现。