insert into `likes`(user_id, liker_id, relation_ship) values(1, 2, 3) on duplicate key update relation_ship=relation_ship | 1;
这一句 SQL 语句如何理解?我只知道是如果新增的数据在likes 表中主键索引和唯一索引不冲突则新增,反之则更新,但是update 后边的内容就不太能理解了,求解答
表结构如下:
CREATE TABLE `likes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`liker_id` int(11) NOT NULL,
`relation_ship` tinyint(1) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_user_id_liker_id` (`user_id`,`liker_id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4;
当主键或唯一索引冲突时,将
relation_ship
字段更新为relation_ship
原先值与1
的按位或
运算结果假设原先的值是
2
,则会更新成3
。