2016-02-10 8 views
0

Я бы хотел заменить некоторую часть поля столбца чем-то другим. Единственная проблема в том, что то, что я пробовал, не работает. Я использую HeidiSQLSQL Inner Query In Replace Statement

Это обзор базы данных: Database Overview

То, что я хотел бы сделать это для каждый user_id с FIELD_ID 523 Я хотел бы заменить «Централ-zorgportaal .nl/afbeeldingen/' с '/profiles/(для каждого идентификатора пользователя здесь)/'.

Таким образом, конечный результат, например, после выполнения запроса будет выглядеть следующим образом: «/profiles/711/logo.gif», но затем для каждого пользователя с diffrent Logo.gif.

Примечание: не удается разместить более двух ссылок, поэтому удалите http и т. Д. Спереди.

Это запрос, я пытался и dind't работы:

update wp_bp_xprofile_data 
    set value = replace(value, 
         'http://www.centraal-zorgportaal.nl/afbeeldingen/', 
         '/profiles/' + 
         (select user_id 
          from wp_bp_xprofile_data 
          where user_id = @n := @n + 1 n) + 
         '/') 
    where field_id = 523 

(имя таблицы: wp_bp_xprofile_data)

Это сообщение об ошибке я получил: Error message:

Может ли кто-нибудь объяснить, почему это не работает, как его исправить и как можно лучше подойти к этой проблеме?

+0

Фотографии не подходят для сообщений об ошибках, если вы не можете просто скопировать их, а затем записать их. –

+0

использовать CONCAT (str1, str2, ...) вместо plus (+) – Vaseph

+0

Является ли «обзор базы данных» действительно «образцом данных в таблице»? –

ответ

0

В MySQL/MariaDB вы не можете ссылаться на изменяемую таблицу. Из вашего описания вам, похоже, нужно что-то вроде этого:

update wp_bp_xprofile_data 
    set value = replace(value, 
         'http://www.centraal-zorgportaal.nl/afbeeldingen/', 
         concat('/profiles/', user_id, '/') 
         ) 
    where field_id = 523; 
+0

Спасибо, что я работал так, как хотел! Edit: Вы уже ответили на мой оставшийся вопрос. –