[英]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.