MySQL оператор для использования group_concat в обновлении - PullRequest
0 голосов
/ 15 мая 2018

Я хочу скопировать некоторые данные из множества строк в одну. Когда я использую Выбрать все, отображается как я хочу, но я не могу преобразовать его в запрос на обновление. Пожалуйста, помогите мне найти проблему Выбор и обновление:

SELECT CONCAT( P.POST_CONTENT, GROUP_CONCAT(M.meta_value ORDER BY M.meta_id SEPARATOR 'CHAR(10)'))
FROM posts P
INNER JOIN postmeta M ON P.ID=M.post_id
WHERE M.meta_key = 'wpcf-obrazek'
GROUP BY P.ID

и

    UPDATE P, M
    SET P.post_excerpt = CONCAT( P.POST_CONTENT, GROUP_CONCAT(M.meta_value ORDER BY M.meta_id SEPARATOR 'CHAR(10)'))
    FROM posts P
    INNER JOIN postmeta M ON P.ID=M.post_id
    WHERE M.meta_key = 'wpcf-obrazek'
    GROUP BY P.ID

Ошибка:

#1064 - Something is wrong in your syntax obok 'FROM posts P
    INNER JOIN postmeta M ON P.ID=M.post_id
    WHERE M.meta_key ' w linii 3

1 Ответ

0 голосов
/ 15 мая 2018

Обновление должно работать, если вы соединяете производную таблицу с предварительно обработанными данными, попробуйте:

UPDATE P
INNER JOIN (
             SELECT P.ID, CONCAT( P.POST_CONTENT, GROUP_CONCAT(M.meta_value ORDER BY M.meta_id SEPARATOR 'CHAR(10)')) AS data
             FROM posts P
               INNER JOIN postmeta M ON P.ID=M.post_id
             WHERE M.meta_key = 'wpcf-obrazek'
             GROUP BY P.ID
           ) AS excerpt_data ON P.ID = excerpt_data.ID
SET P.post_excerpt = excerpt_data.data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...