CTE Verwendung Ich versucheKann ich eine Cte aktualisieren?
WITH cte as (
SELECT myFieldName,
row_number() over (order by gps_device_id) as rn
FROM tracker.gps_devices
)
UPDATE cte
SET cte.myFieldName = CASE WHEN cte.rn % 3 = 0 THEN '0'
WHEN cte.rn % 3 = 1 THEN '1'
WHEN cte.rn % 3 = 2 THEN '2'
END
aber bekam die folgende Fehlermeldung zu tun.
ERROR: relation "cte" does not exist
Sieht aus wie ich INSERT
und DELETE
nach WITH
tun können, aber UPDATE
nur innerhalb des CTE, ist das richtig? Ich bin mir sicher, dass ich so etwas gemacht habe, aber vielleicht war es in einer anderen Datenbank.
https://www.postgresql.org/docs/9.6/static/queries-with.html
Also ich damit beendet, auch wenn die Arbeit sehr verwirrend ist, jede Anregung ?.
UPDATE tracker.gps_devices g
SET g.myFieldName = CASE WHEN t.rn % 3 = 0 THEN '0'
WHEN t.rn % 3 = 1 THEN '1'
WHEN t.rn % 3 = 2 THEN '2'
END
FROM (SELECT gps_device_id,
myFieldName,
row_number() over (order by gps_device_id) as rn
FROM tracker.gps_devices) as t
WHERE g.gps_device_id = t.gps_device_id
Ja, ich war mit SQL Server Syntaxis verwechselt. http://stackoverflow.com/questions/11562536/update-records-in-table-from-cte –