在我的表中存储两列用户 ID,我想做的是用对标记用户 ID。例如,用户 id 是这样的:
user_1_id user_2_id
2 3
3 2
我们认为这两个记录是一对(只有两个用户,但顺序不同)。我添加了一个计算的新生成列user_1_id + user_2_id
,如果结果相同,则为一对。但是现在我面临一个新问题,它工作不完美,因为用户 0 和 5 与记录冲突,实际上 0 和 5 是一对新用户。我应该怎么做才能完美地标记用户对?我已经思考这个问题好几个小时了。这是我项目中的真实用户信息:
这是我的表 DDL:
CREATE TABLE `spark_game_user_contact` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`game_id` bigint(20) DEFAULT NULL,
`user_id` bigint(20) NOT NULL,
`target_user_id` bigint(20) NOT NULL,
`is_exchange` int(11) NOT NULL DEFAULT '0',
`is_whisper` int(11) NOT NULL DEFAULT '0',
`pair_flag` bigint(20) GENERATED ALWAYS AS ((`user_id` + `target_user_id`)) STORED,
`updated_time` bigint(20) NOT NULL,
`created_time` bigint(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `ux_gut` (`game_id`,`user_id`,`target_user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8mb4;
如果您希望这对是唯一的,则将此列设为虚拟但添加唯一索引。