drop table if exists t;
create table t(ID int, NAME varchar(20), POSition varchar(20),NOTES varchar(500));
insert into t values
(1 , 'Richard' , 'Programmer' , 'Not paid enough'),
(2 , 'David' , 'Manager' , 'Lazy'),
(3 , 'Hilary' , 'Personnel Manager','Doesnt care');
update t
set notes =
CONCAT(NOTES, ' - ', NAME, ' - ', POSITION)
where 1 = 1;
select * from t;
+------+---------+-------------------+------------------------------------------+
| ID | NAME | POSition | NOTES |
+------+---------+-------------------+------------------------------------------+
| 1 | Richard | Programmer | Not paid enough - Richard - Programmer |
| 2 | David | Manager | Lazy - David - Manager |
| 3 | Hilary | Personnel Manager | Doesnt care - Hilary - Personnel Manager |
+------+---------+-------------------+------------------------------------------+
3 rows in set (0.00 sec)
最后,我想删除 NAME 和 POSITION 字段你确定要这样做吗?再次取出碎片是一种痛苦。
如果任何元素为空,如果不能保证元素有值,则 concat 将返回 null,则需要进行 ifnull 测试
update t
set notes =
CONCAT(IFNULL(NOTES,''), ' - ', IFNULL(NAME,''), ' - ', IFNULL(POSITION,''))
where 1 = 1;
drop table if exists t;
create table t(ID int, NAME varchar(20), POSition varchar(20),NOTES varchar(500));
insert into t values
(1 , 'Richard' , 'Programmer' , 'Not paid enough'),
(2 , 'David' , 'Manager' , 'Lazy'),
(3 , 'Hilary' , 'Personnel Manager','Doesnt care'),
(4 , 'HILARY' , NULL,'DOES NOW') ;
update t
set notes =
CONCAT(IFNULL(NOTES,''), ' - ', IFNULL(NAME,''), ' - ', IFNULL(POSITION,''))
where 1 = 1;
+------+---------+-------------------+------------------------------------------+
| ID | NAME | POSition | NOTES |
+------+---------+-------------------+------------------------------------------+
| 1 | Richard | Programmer | Not paid enough - Richard - Programmer |
| 2 | David | Manager | Lazy - David - Manager |
| 3 | Hilary | Personnel Manager | Doesnt care - Hilary - Personnel Manager |
| 4 | HILARY | NULL | DOES NOW - HILARY - |
+------+---------+-------------------+------------------------------------------+
4 rows in set (0.00 sec)