PostgreSQL сопоставляет несколько значений между таблицами - PullRequest
0 голосов
/ 02 января 2012

У меня есть этот запрос для вставки данных, которых нет внутри mytab из temptab

 INSERT INTO mytab SELECT * FROM temptab 
  WHERE NOT EXIST (SELECT  * FROM mytab WHERE 
    (mytab .col1= temptab .col1 AND mytab .col2=temptab .col2))  

Я хочу знать, есть ли какой-либо другой способ записи условной части этого запроса, т.е. последнийStatement.
Приведенный выше запрос работает абсолютно нормально, но становится слишком длинным при сопоставлении со многими другими столбцами.Поэтому я подумал, есть ли какой-нибудь формат, например,

 mytab.(col1,col2,...,coln)=temptab.(col1,col2,...,coln)  

. Мне нужно сопоставить так много столбцов, поскольку комбинация этих работ является первичным ключом для моей таблицы. Аналогично существует еще много таблиц.

любые мнения приветствуются.

PS : не стесняйтесь улучшать запрос.

Ответы [ 2 ]

3 голосов
/ 02 января 2012
INSERT INTO
  mytab
SELECT
  *
FROM
  temptab 
WHERE
  (temptab) NOT IN (
    SELECT (mytab) FROM mytab
  );
2 голосов
/ 02 января 2012

Вы можете написать это так:

(mytab.col1, mytab.col2) = (temptab.col1, temptab.col2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...