Dies ist die Abfrage, die ich ausführen möchte, um mehrere Zeilen anhand ihrer ID in einer einzigen Zeichenfolge zu aktualisieren. Ich bin mit AWS Redshift (die auf eine sehr alte Version von PostgreSQL basiert):Amazon Redshift-Syntaxfehler bei Verwendung von UPDATE für angegebene VALUEs
UPDATE promotion
SET engagements = c.engagements
FROM (VALUES (668, 73), (684, 135), (680, 73), (672, 76), (682, 94),
(676, 4), (670, 81), (686, 104), (678, 1), (674, 0)
) AS c(id, engagements)
WHERE c.id = promotion.id;
Und das ist der Fehler produziert:
sqlalchemy.exc.ProgrammingError: (pg8000.core.ProgrammingError) (u'ERROR',
u'42601', u'syntax error at or near ","', u'72', u'/home/ec2-
user/padb/src/pg/src/backend/parser/parser_scan.l', u'699', u'yyerror', u'',
u'')
[SQL: 'UPDATE promotion SET engagements = c.engagements FROM (VALUES
(668, 73), (684, 135), (680, 73), (672, 76), (682, 94), (676, 4), (670, 81),
(686, 104), (678, 1), (674, 0)) AS c(id, engagements) WHERE c.id =
promotion.id;']
EDIT: Mit Abfrage-Format von Antwort hier: Update multiple rows in same query using PostgreSQL
@ jarcobi889 Ja, behoben. – jstudios
Dies ist nur ein Stich in die Dunkelheit von anderen Code online zu sehen, aber ist nicht das Format in der Regel VALUES auf der Außenseite der einschließenden Klammern zu setzen? : VON WERTEN ((668, 73), (684, 135) ... usw. – jarcobi889
Von [nicht unterstützte Postgres-Funktionen] (http://docs.aws.amazon.com/redshift/latest/dg/c_unsupported-postgresql- features.html): "* VALUES Liste verwendet als Konstanten Tabellen *" –