2016-10-06 3 views
0

Voici un exemple de l'exigence que j'ai.J'ai 2 tables. Tableau d'utilisateur et une autre table où j'entre l'utilisateur de nourriture aime.postgresql: INSERT INTO ... (SELECT * ..., "valeur fixe")

Class User{ 
    long id 
} 

class UserFood{ 
    Long id (auto-generated) 
    long user_id 
    String food 
} 

Dans ma base de données, j'ai quelques centaines d'enregistrements. Maintenant, je veux profiter de tous de l'utilisateur de la table de UserFood qui ont la nourriture « Toast français » et ajouter « jus d'orange »

donc je suis à la recherche d'une instruction d'insertion comme le

suivant
insert into user_food (user_id,food) values (select user_id from user_food where food="French Toast","Orange Juice"); 

Quand je exécuter la requête ci-dessus je reçois l'erreur suivante

syntax error at or near "select" 

Y at-il une solution pour cela?

Merci à l'avance

+1

Si vous souhaitez utiliser un 'select' ne pas utiliser' values' –

Répondre

0

La requête suivante ajouter des enregistrements de jus d'orange pour tous les utilisateurs qui ont au moins un enregistrement de pain grillé français.

INSERT INTO user_food (user_id, food) 
SELECT DISTINCT user_id, 'Orange Juice' 
FROM user_food 
WHERE user_id IN (SELECT user_id FROM user_food WHERE food = 'French Toast') 
+0

Merci, j'ai pu obtenir la solution avec une légère modification à notre réponse: INSERT INTO 'user_food (user_id, nourriture) SELECT user_id distinct, 'Orange Juice' DE user_food O user user_id IN (SELECT user_id distinct user_food OERE food = 'French Toast') ' – Visahan

+0

@Visahan Vous n'avez pas besoin de DISTINCT dans la sous-requête, car il ne sera pas changer la logique ou le résultat. –