2015-02-17 2 views
0

Я новичок postgresql и должен сделать следующее:Как добавить данные из столбца из другой таблицы в postgresql?

У меня есть таблица1: целое число id1, столбец 1, метка времени, столбец2, столбец3.

У меня есть таблица2: id2 целое число, column1 varchar, column2 числовое значение, column3 timestamp.

Я хотел бы добавить данные из таблицы2.column3 в table1.column1, в то время как table1.id1 (первичный ключ) должен автоинкремент. Соответствующие поля в таблице1.column2 должны получить временную метку фактического времени. Таблица1.column3 должна оставаться пустой.
Не существует общего поля, связывающего таблицы. Кроме того, table2.column3 содержит несколько записей с одинаковым значением. Однако в таблице1.column1 не должно быть повторяющихся значений.

Я провел много исследований в Интернете, но не нашел чего-то подобного.

Я пробовал:

Insert into table1 (id1,column1,column2) 
values ((id1).nextval),(select column3 from table2),now()); 

Однако он дал мне ошибку синтаксиса в выберите команду, и я уверен, что есть и другие проблемы тоже.

Может кто-нибудь помочь, пожалуйста? У меня нет никакой подсказки.

Джанет

+0

Ваши обфусканные названия таблиц и столбцов делают это очень трудным для понимания. Пожалуйста, разместите некоторые примеры данных для обеих таблиц и ожидаемого результата (в таблице 2). Звучит так, будто вы действительно ищете 'update', а не' insert'. –

+0

Ваше заявление 'Нет общего поля, связывающего таблицы', делает ваше решение практически невозможным, если вы не хотите заполнять' table1' всеми реестрами 'table2' без какой-либо роли! –

+0

Большое спасибо за ваш быстрый ответ. Я кое-что пойму, чтобы обойти эту проблему. –

ответ

1

Вы можете объединить вставку с запросом на выборку (который будет вставлять одну запись для каждого результата запроса на выборку). На вашем примере это будет:

INSERT INTO table1 (column1,column2) 
SELECT column3, NOW() from table2 

Примечание: Я опустил столбец ID, так как он имеет значение по умолчанию автоматического приращения будут заполнены по умолчанию.

+0

Это то, о чем я думал и в первую очередь, но утверждение «* Соответствующие поля в таблице1.column2 должны получить временную метку фактического времени *», похоже, указывает на то, что действительно требуется какое-то «обновление». –

Смежные вопросы