替换语句中的SQL内部查询

时间:2016-02-10 12:09:40

标签: sql replace mariadb heidisql

我想用其他东西替换列字段的某个部分。唯一的问题是我尝试过的东西不起作用。我正在使用HeidiSQL

这是数据库的概述: Database Overview

我想做的是每个 user_id field_id 523 我想替换'centraal-zorgportaal.nl / afbeeldingen /' with '/ profiles /(对于每个用户ID)/'

因此运行查询后的最终结果示例如下所示: '/ profiles / 711 / logo.gif',但是每个用户都有一个不同的logo.gif。

注意:不能发布两个以上的链接,因此删除了前面的http等。

这是我尝试过但不起作用的查询:

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:

有人可以解释为什么这不起作用,如何解决它以及解决这个问题的最佳方法?

1 个答案:

答案 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;