我正在尝试解决我继承下来的对不同数据源处理不当的问题。我有一个包含好用户和坏用户的用户表。
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 与第一个表中的不对应。
我想将我所有的用户都放在一张表中,并简单地标记好用户和坏用户。
我想做的是改变用户表并添加一个默认为 0 的列 ('evil')。然后我想从我的 'users_evil') 表中转储数据,然后运行 INSERT..ON DUPLICATE将此数据更新到第一个表中(在电子邮件匹配的地方设置 'evil'=1)
问题是“PK”设置为 user_id 而不是“email”。 成功实现此目标的任何建议,甚至是其他策略。
我可以运行此语句但仅在语句持续期间将另一列视为 PK 吗?
最佳答案
ALTER table add column...
UPDATE users set evil = 0;
UPDATE users u join users_evil ue ON ue.email = u.email and u.name = ue.name set evil = 1;
你只需要更新用户表中的坏用户
关于mysql - INSERT..ON DUPLICATE KEY UPDATE - 但不使用重复键进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2991055/