2013-04-17 2 views
2

Je suis un peu confus à propos de la fusion d'une table dans une autre. Mes deux tables ressemble à ceci:PostgresSQL combinant des tables

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 

Mon problème est que je ne veux pas écraser les propriétés qui sont A. Est-ce tableau simple UNION?

Répondre

3

Vous pouvez simplement exécuter l'instruction INSERT INTO..SELECT,

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

Ce qu'il fait est-il copie tous les enregistrements de TableB dans TableA. Mais si vous voulez que les enregistrements de projection seulement, puis d'un simple UNION fera très bien

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

Ok qui ressemble à ce que je voulais écrire à l'origine, mais ce qui se passe avec l'id 'SELECT, NULL name AS. ..'? – trev9065

+0

il définit la valeur 'NULL' pour' LIKES'. Vous pouvez également faire ceci: 'INSERT INTO TableA (identifiant, nom, email, nom d'utilisateur) SELECT id, nom, email, nom d'utilisateur FROM TableB' –

+0

OK donc quelles que soient les valeurs que je ne veux pas insérer, je peux les laisser hors du colonnes de l'instruction initiale 'INSERT INTO'? – trev9065