2016-06-19 7 views
2

Ich versuche, eine insert-select Anweisung in N1QL auszuführen (Einfügen von Dokumenten, deren Schlüssel/Wert das Ergebnis einer SELECT-Anweisung sind) und ich verstehe die Syntax nicht.N1QL - Einfügen-Wählen

Ich versuchte Ausführung:

insert into tempbucket (KEY payload.id,VALUE select * from default where payload.fooId in [100,101 ]) RETURNING * ; 

in einigen Variationen, aber nichts funktionierte.

Edit: Die SELECT-Anweisung ist

select * from Standard wo payload.fooId in [100101]

den Schlüssel der Dokumente, die ich den Wert des Feldes schaffen wollen, ist key und der Wert ist der gesamte JSON der oben erwähnten SELECT-Anweisung.

+0

Bitte bearbeiten Sie Ihre Frage und trennen Sie die folgenden 3 Dinge: die SELECT-Anweisung als Ihre Quelle verwendet werden; der Teil des SELECT, der als KEY verwendet wird; der Teil des SELECT, der als VALUE verwendet werden soll. Bitte setzen Sie jedes in einen separaten Absatz für Klarheit. – geraldss

+0

Danke, bearbeitet. – shays10

Antwort

1

Der KEY und VALUE müssen Ausdrücke aus Ihrer Abfrage referenzieren.

INSERT INTO tempbucket (KEY d.`key`, VALUE d) 
SELECT d 
FROM default d 
WHERE payload.fooId IN [100,101 ] 
;