我想解决一个问题,我继承了对不同数据源的不良处理。我有一个包含善恶用户的用户表。INSERT..ON DUPLICATE KEY UPDATE - 但不使用重复密钥来比较
create table `users`(
`user_id` int(13) NOT NULL AUTO_INCREMENT ,
`email` varchar(255) ,
`name` varchar(255) ,
PRIMARY KEY (`user_id`)
);
在此表中,主键当前设置为user_id。
我有另一个表('users_evil'),其中只包含恶意用户(该表中的所有用户都包含在第一个表中) - 此表上的user_id与第一个表中的user_id不一致。
我想让我的所有用户都在一张桌子上,并简单地标记哪些是好的,哪些是坏的。
我想要做的是改变用户表并添加一个默认为0的列('evil')然后我想从我的'users_evil'表中转储数据,然后运行INSERT..ON将这些数据复制密钥更新放入第一个表(设置'evil'= 1,其中电子邮件匹配)
问题在于'PK'设置为user_id而不是'email'。 任何建议,或甚至成功实现这一目标的另一种策略。
我可以运行这个语句,但是在语句持续时间内将另一列作为PK来处理。
我不知道你可以在更新期间加入 - 这正是我发布到SO的原因。感谢这个答案。 – calumbrodie 2010-06-07 16:10:37
当你只运行一次这样简单的查询时,我没有看到有临时索引的一点。 – 2010-06-07 16:13:06
确实。你的方法更有意义。标记为正确,感谢您的帮助 – calumbrodie 2010-06-07 16:16:16