2016-10-06 16 views
0

Das folgende ist ein Beispiel für die Anforderung, die ich habe. Ich habe 2 Tabellen. Benutzertabelle und eine andere Tabelle, in die ich den Nahrungsmittelbenutzer mag, mag.postgresql: INSERT INTO ... (SELECT * ..., "fester Wert")

Class User{ 
    long id 
} 

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

In meiner Datenbank habe ich ein paar hundert Datensätze. Jetzt habe ich die alle Benutzer von UserFood Tisch nehmen wollen, die das Essen „Französisch Toast“ und fügen „Orange Juice“ haben

So suchen Ich bin für eine Insert-Anweisung wie folgt

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

Wenn i Führen Sie die obige Abfrage Ich erhalte den folgenden Fehler

syntax error at or near "select" 

Gibt es eine Lösung dafür?

Vielen Dank im Voraus

+1

Wenn Sie eine 'select' verwenden möchten nicht verwenden' values' –

Antwort

0

Die folgende Abfrage wird für alle Benutzer Orangensaft Datensätze hinzufügen, die mindestens ein französisch Toast Rekord haben.

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

Danke, ich war in der Lage, die Lösung mit einer geringfügigen Änderung unserer Antwort zu bekommen: 'INSERT INTO user_food (user_id, Lebensmittel) SELECT distinct user_id, 'Orangensaft' VON user_food WHERE user_id IN (SELECT eindeutige user_id VON user_food WHERE food = 'Französisch Toast') ' – Visahan

+0

@Visahan Sie brauchen nicht" DISTINCT "in der Unterabfrage, weil es nicht Ändere die Logik oder das Ergebnis. –

Verwandte Themen