MySQL 5.6.14:
Use:
insert into history (phone, message)
values (1, 'test')
on duplicate key
update message = concat(message, values(message));
Let's take an example:
CREATE TABLE `history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`phone` int(11) DEFAULT NULL,
`message` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `phone` (`phone`)
) ENGINE=InnoDB;
Let's add initial data:
insert into history (phone, message) values (1, 'test');
+----+-------+---------+
| id | phone | message |
+----+-------+---------+
| 1 | 1 | test |
+----+-------+---------+
Let's add it again with on duplicate key
using the set
word:
insert into history (phone, message) values (1, 'test') on duplicate key set message = concat(message, values(message));
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'set message = concat(message, values(message))' at line 1
Let's add it again with on duplicate key
using update
word:
insert into history (phone, message)
values (1, 'test')
on duplicate key
update message = concat(message, values(message));
Query OK, 2 rows affected (0.01 sec)
+----+-------+----------+
| id | phone | message |
+----+-------+----------+
| 1 | 1 | testtest |
+----+-------+----------+
Hope this example helps.