-- 将 user_temp 迁移为 user(mobile 为空)与 user_auth START TRANSACTION; -- 1) 迁移临时用户到 user(mobile 置为空) INSERT INTO `user` ( `delete_time`, `del_state`, `version`, `mobile`, `password`, `nickname`, `info`, `inside` ) SELECT NULL, 0, COALESCE(ut.version, 0), NULL, NULL, NULL, '', 0 FROM `user_temp` ut WHERE ut.del_state = 0; -- 2) 将临时认证迁移到 user_auth(按插入顺序关联最近插入的 user.id) INSERT INTO `user_auth` ( `delete_time`, `del_state`, `version`, `user_id`, `auth_key`, `auth_type` ) SELECT NULL, 0, COALESCE(ut.version, 0), u.id, ut.auth_key, ut.auth_type FROM `user_temp` ut JOIN `user` u ON u.del_state = 0 AND u.mobile IS NULL WHERE ut.del_state = 0; -- 注意:以上为示意,实际生产应通过显式映射(如临时ID与新UserID映射表)确保一一对应,避免笛卡尔匹配。 COMMIT; -- 唯一索引保障 ALTER TABLE `user_auth` ADD UNIQUE INDEX `idx_auth_type_key` (`auth_type`, `auth_key`);