UPDATE from CTE syntax error - Mailing list pgsql-general

From Alexander Farber
Subject UPDATE from CTE syntax error
Date
Msg-id CAADeyWgGcDe652eet9cTKdcycLfym8GL7u4fxQf4Ye+BzuHzdQ@mail.gmail.com
Whole thread Raw
Responses Re: UPDATE from CTE syntax error
Re: UPDATE from CTE syntax error
List pgsql-general
Good evening,

I am struggling with the syntax, please help.

This query with a CTE works ok:

WITH                                                                                                                                                          extract_letters AS (                                                                                                                                                  SELECT                                                                                                                                                                mid,                                                                                                                                                          STRING_AGG(x->>'letter', '') AS letters                                                                                                               FROM (                                                                                                                                                                SELECT                                                                                                                                                                mid,                                                                                                                                                          JSONB_ARRAY_ELEMENTS(tiles) AS x                                                                                                                      FROM words_moves                                                                                                                                              WHERE action='play'                                                                                                                                   ) z                                                                                                                 GROUP BY mid)                                                                                                                                         SELECT * from extract_letters;

 mid   | letters
--------+---------
     12 | АКЖОЛ
     15 | ДМО
     16 | ТО
     20 | ШГА
     21 | КТИ
     22 | ВОЗ
     24 | АКПОНК

But UPDATEing from the CTE does not -

WITH extract_letters AS (                                                                                                                                             SELECT                                                                                                                                                                mid,                                                                                                                                                          STRING_AGG(x->>'letter', '') AS letters                                                                                                               FROM (                                                                                                                                                                SELECT                                                                                                                                                                mid,                                                                                                                                                          JSONB_ARRAY_ELEMENTS(tiles) AS x                                                                                                                      FROM words_moves                                                                                                                                              WHERE action='play'                                                                                                                                   ) z                                                                                                                                                   GROUP BY mid)                                                                                                          UPDATE words_moves m                                                                                                                                          SET m.letters = el.letters                                                                                                                                    FROM extract_letters el                                                                                                                               WHERE m.mid = el.mid;

ERROR:  42703: column "m" of relation "words_moves" does not exist
LINE 14: SET m.letters = el.letters
             ^

Regards
Alex

pgsql-general by date:

Previous
From: Olivier Gautherot
Date:
Subject: Re: Fast logical replication jump start with PG 10
Next
From: Alexander Farber
Date:
Subject: Re: UPDATE from CTE syntax error