簡體   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