mysql - INSERT..ON DUPLICATE KEY UPDATE - 但不使用重复键进行比较

标签 mysql duplicate-data

我正在尝试解决我继承下来的对不同数据源处理不当的问题。我有一个包含好用户和坏用户的用户表。

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/

相关文章:

mysql - 一个外键与 2 个引用表

php - 来自mysql的重复结果

ms-access - 显示仅删除第二个重复行但保留第一行的表

mysql - 列的重复记录

Mysql - 连接多个表以设置连接,以更新表中的单个列

mysql - 将 SQL 数据库从 MySql (phpmyadmin) 迁移到 MSSQL (sql express)

PHP while 循环显示类别,然后显示其下的产品

javascript - 使用 Angular 循环遍历 json 数据并填充缺失值

c# - 从数据表中删除重复条目的最佳方法

php - 在 PHP 中获取重命名的文件名