Как вставить столбец и его значения из другой таблицы без общего поля в postgresql? - PullRequest
0 голосов
/ 22 декабря 2019

У меня есть две таблицы в postgresql без общего поля.

  • В Table1 есть поле TIMESTAMP.
  • В Table2 есть поля FIRST_TIMESTAMP, LAST_TIMESTAMP и SEGMENT_ID.

Как вставить поле SEGMENT_ID и его значения из таблицы 2 в таблицу 1 на основе условия like;

"Если Table1.TIMESTAMP находится между таблицей 2.FIRST_TIMESTAMP и Table2.LAST_TIMESTAMP "

(If Table1.TIMESTAMP> = Table2.FIRST_TIMESTAMP AND Table1.TIMESTAMP <= Table2.LAST_TIMESTAMP) </p>

Ответы могут содержать оператор UPDATE postgresql, а не оператор INSERTтоже.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 22 декабря 2019

Я думаю, что вы ищете что-то вроде этого:

INSERT INTO table1 (segment_id, col1, col2, ...)
SELECT segment_id, col1, col2, ... FROM table2 WHERE <where_condition>;

Обратите внимание, что если вы INSERT IN, не существует table1.timestamp, поэтому вы не можете сравнить его с table2, поэтому вам нужно будет придумать другой where_condition.

для UPDATE:

UPDATE table1
   SET col1 = table2.segment_id
  FROM table2
 WHERE table1.timestamp_col BETWEEN table2.first_timestamp AND table2.last_timestamp;
1 голос
/ 22 декабря 2019

Это синтаксис объединения при условии, что временная метка таблицы1 должна быть между 2 временными метками таблицы2 для postgresql:

update table1 t1
set segment_id = t2.segment_id
from table2 t2
where t1.timestamp between t2.first_timestamp and t2.last_timestamp
...