2016-11-17 32 views
0

的條款我有兩個表INSERT INTO基於WHERE第二臺

table1 
+--------+-----+------+ 
| DATE | VAR| VAL| 
+--------+-----+------+ 
|20160101|VAR_1| 0.4| 
|20160101|VAR_2| 0.1| 
|20160102|VAR_1| 0.6| 
|20160102|VAR_2| 0.1| 
|20160103|VAR_1| 0.5| 
|20160103|VAR_2| 0.1| 
+--------+-----+------+ 

table 2 
+--------+-----+------+ 
| DATE | VAR| VAL| 
+--------+-----+------+ 
|20160102|VAR_1| 0.6| 
|20160102|VAR_2| 0.1| 
|20160103|VAR_1| 0.5| 
|20160103|VAR_2| 0.1| 
|20160104|VAR_1| 0.3| 
|20160104|VAR_2| 0.2| 
|20160105|VAR_1| 0.2| 
|20160105|VAR_2| 0.6| 
|20160106|VAR_1| 0.3| 
|20160106|VAR_2| 0.4| 
+--------+-----+------+ 

我想要做的就是添加了表2的所有新項目將基於日期表1。我的想法是這樣的

INSERT INTO table1 SELECT * FROM table2 WHERE date > (SELECT MAX(date) from table1); 

但我得到一個語法錯誤。 隨着不在工作...

INSERT INTO table1 SELECT * FROM table2 WHERE table2.date NOT IN(SELECT DISTINCT date from table1); 

任何幫助,高度讚賞!

+0

會有問題,你有第二個,但不是第一個table2.data?你有錯誤的細節嗎?編輯:刪除插入並只做選擇。看看你得到了什麼。 – johnny

+0

它在Postgres工作。請修改您的帖子以附加第一條插入語句的錯誤消息。另外,你是否在varchar列中存儲日期?如果是這種情況,請考慮將其切換爲適當的數據類型。 –

+0

您能否發佈您收到的錯誤。 –

回答

1

下面是一個辦法試試這個,我用date1的日期,而不是

select t2.* from table2 t2, (SELECT MAX(date1) date1 FROM table1) t1 where t2.date1 > t1.date1; 
+0

Works完美,謝謝! – CKre