У меня есть две таблицыINSERT INTO на основе ИНЕКЕ второй таблицы
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|
+--------+-----+------+
То, что я хочу сделать, это добавить все новые записи на table2 в table1 на основе даты. Моя идея была такой:
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);
Любая помощь высоко ценится!
Имеет ли значение, что у вас есть table2.data во второй, но не первый? Вы получили какие-либо детали в ошибке? Изменить: удалить вставку и выполнить только выбор. Посмотрите, что вы получаете. – johnny
Работает в Postgres. Пожалуйста, отредактируйте свое сообщение, чтобы прикрепить сообщение об ошибке для первой инструкции вставки. Кроме того, вы сохраняете свои даты в столбце varchar? Если это так, подумайте о переключении на соответствующий тип данных. –
Не могли бы вы предоставить сообщение об ошибке, которую вы получаете. –