2012-01-19 60 views
0

假設您在PostgreSQL中有兩個表。表A有字段x,其類型字符變化並且有很多重複。表B具有字段,zwÿ串行柱,Ž具有相同的類型X,和瓦特是一個整數。在PostgreSQL中,如何插入並使用目標表的自動增量列

如果我發出此查詢:

INSERT INTO B 
SELECT DISTINCT ______, A.x, COUNT(A.x) 
FROM A 
WHERE x IS NOT NULL 
GROUP BY x; 

我得到一個錯誤,不管是什麼我在______。我甚至已經得到了異域風情作爲CAST(NULL as INTEGER),但只是給了我這個錯誤:

a null value in column "id" violates not-null constraint

有一個簡單的解決方案?

回答

4

你被允許,甚至使用INSERT時鼓勵指定的列(你真的應該始終指定列):

insert into b (z, w) 
select x, count(x) 
from a 
where x is not null 
group by x 

而且我沒有看到distinct點,當你」已經由x分組,所以我放棄了;我還刪除了列前綴,因爲它們不是必需的,只是給SQL添加噪音。

如果您在使用INSERT時未指定列,則會獲得默認值,並且會爲您提供您正在查找的序列值。

+0

謝謝。就是這樣!並感謝關於指定列的提醒。 我同意列前綴。爲了清晰起見,請在此添加它們 – 2012-01-19 02:12:12