2013-04-17 3 views
2

Я немного смущен о слиянии одной таблицы в другую. Мои две таблицы выглядит так:Таблицы объединения PostgresSQL

Table A           Table B 
id | name | likes | email | username   id | name | email | username 
1 | joe | 3 | null | null    1 | ben | [email protected] | user 


Result: Table A 
id | name | likes | email | username 
1 | joe | 3  | null | null 
2 | ben | null | [email protected] | user 

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

ответ

3

Вы можете просто выполнить INSERT INTO..SELECT заявление,

INSERT INTO TableA(id, name, likes, email, username) 
SELECT id, name, NULL AS likes, email, username 
FROM TableB 

Что она делает это копирует все записи из TableB в TableA. Но если вы хотите записи для проекции только, то простой UNION будет делать только штрафом

SELECT id, name, likes, email, username FROM tableA 
UNION 
SELECT id, name, NULL AS likes, email, username FROM TableB 
+0

Хорошо, что похоже, что я пытался писать изначально, но то, что происходит с 'SELECT, идентификатор, имя NULL AS. ..'? – trev9065

+0

устанавливает значение «NULL» для 'LIKES'. Вы также можете сделать это: «INSERT INTO TableA (id, имя, адрес электронной почты, имя пользователя) SELECT id, имя, адрес электронной почты, имя пользователя FROM TableB' –

+0

Итак, независимо от того, какие значения я не хочу вставлять, я могу оставить их вне столбцы исходного выражения 'INSERT INTO'? – trev9065

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