L'ajout de deux instructions select dans un insert into dans postgresql
J'ai fait une table temporaire par:
create temporary table return_table
(
p1 BIGINT,
p2 VARCHAR(45),
p3 VARCHAR(45),
p4 VARCHAR(45),
p5 VARCHAR(45),
p6 float,
p7float
) on commit drop;
Im essayant de prendre 2 sélectionnez états et insérer des données dans la table temporaire. Par exemple, j'ai une table nommée t1 qui fournit les quatre premières valeurs, et puis je veux les 3 valeurs de la table temporaire à venir à partir d'une autre table.
Pour l'instant j'ai:
insert into return_table
(Select var1, var2, var3, var4
from t1 where var1 = 10)
Qui aura réussi à mettre des 4 valeurs dans mon tableau, puis laisser le reste nulle. C'est très bien, alors quand j'ai essayer d'insérer les trois dernières variables à partir d'une autre table. par exemple,
insert into return_table
(Select var1, var2, var3, var4
from t1 where var1 = 10, Select var5, var6, var 7
from t2 where var6 = 25)
Il renvoie une erreur de syntaxe. J'ai essayé quelques autres changements syntaxiques, mais je ne peux pas trouver la bonne syntaxe pour l'insertion à la fois des résultats de ces instructions select sur la même ligne.
Toute aide serait super!
select
ne sont pas nécessaires à tous.OriginalL'auteur Super_user_one | 2013-12-06
Vous devez vous connecter pour publier un commentaire.
Deux commandes séparées par une virgule n'est pas valide la syntaxe SQL. Vous pouvez utiliser
join
ouwith
plutôt les instructions. Voici un exemple avec unewith
On pourrait ne faire qu'une sous-requête avec
with
mais je les ai mis à la fois pour démontrer la flexibilité de pouvoir ajouter autant de tableaux que nécessaire.Veuillez noter que c'est une très bonne pratique pour la liste de toutes les colonnes de la table que vous insérez dans,
Vous permettra d'éviter beaucoup de problèmes potentiels et maux de tête si vous prenez l'habitude de ça.
Veuillez également noter que l'exemple ci-dessus (et c'est joindre l'équivalent) peut produire funky résultats si l'un des deux sous-requêtes renvoie un nombre de lignes différent d'un
OriginalL'auteur foibs
N'avez pas un exemple pratique pour tester cela, mais si vous mettez "UNION" entre vos instructions select, de sorte qu'il serait le résultat d'un ensemble de retour?
L'UNION est mal. Même si vous aligner les colonnes, il sera de retour 2 lignes au lieu d'une seule, la première rangée sera vide/prédéfini var1 à 4, deuxième ligne sera vide var5 à 7
Ah - gotcha - totalement mal interprété la question d'origine: union = échouer ici... 🙂
OriginalL'auteur Dan G