一、需求

有一张表 表test,我需要将 表test 里面的一些字段查询出来,并且拼接成某种形式的字符串,然后将这个字符串再写入 表test 的某个字段中。

举例,一张表如下:

t`.jpg

最终我需要将str前面的字段 以某种形式 拼接后,再写入 str中,如下图:

t2.jpg

二、实现

  • 字符串的拼接使用 concat()

    • 这个函数的使用方式随便查查就很多, concat(field_1,"-",field_2,"-",field_3)

1. 构建临时表

表 test 中需要的字段以及拼接后的字段全部查询出来,并且构建临时的一张表(或者视图):

  • 注意: 需要有一个主键或者是唯一的键
create table tmp_test select uid,concat (uid,'-',name,'-',address,'-',age,'-',sex,'.',sex) as str from test;

执行完之后会形成一个临时的表 tmp_test

t3.jpg

2. 联合两个表,进行字段的更新即可。

uid是唯一的,因此可以用作where查询条件

update test set str = (select str from tmp_test where tmp_test.uid = test.uid); 

3. drop掉临时表

drop table tmp_test;

4. 最终结果t4.jpg

三、注意

构建临时表的原因是:

Mysql是不允许 先select出同一表中的某些值,再update这个表(在同一语句中)