2013-05-16 47 views
0

我有什麼:SQL新手,如何將列值插入到新列?

ALTER TABLE countryb 
ADD gnppercap real 
; 


INSERT INTO countryb (gnppercap) 
    SELECT gnp/population 
    FROM countryb 
; 

我成功創建列「gnppercap」,現在我想用變量每行中填充值。新變量是gnp和1 /人口的乘積,變量gnp和人口已經在表中,我正在改變,countryb

這裏的錯誤:

ERROR: null value in column "code" violates not-null constraint 
SQL state: 23502 
Detail: Failing row contains (null, null, null, null, null, null, null, null, null, null, null, >null, null, null, null, 0.000263028). 

我知道,表,countryb有一噸在它非空瓦爾的,所以這就是那些空的,我想。我認爲,因爲我指定了我將值插入的列,所以無所謂......?

我迷路了。幫助讚賞!

+0

您添加了一列。它得到了它應該的任何默認值。現在您想要在現有的行中更改此值。 –

+0

因此,使用「更新」,現在有道理。謝謝 – Jefftopia

回答

3

您想更新表格,而不是插入新行。

update countryb set gnppercap = gnp/population 

另一方面:您可能不希望將計算值存儲在單獨的列中。如果更新gnp或人口會怎麼樣?您的gnppercap列將不準確。

+0

哇,這太容易了,簡直不敢相信我錯過了。 另一個問題,有時分子和分母的值都是0,我想將它們設置爲null。我怎樣才能做到這一點? – Jefftopia

+0

這會給你一個null gnppercap。您的新列默認情況下可能爲null,因此不需要將該值重新更新爲null。我會這樣做︰update countryb set gnppercap = gnp/population其中gnp <> 0和人口<> 0 – CharlesC

+0

完美,謝謝! – Jefftopia

相關問題