mysql - 更新 MySQL 中 2 个表之间的电子邮件匹配 - 黑名单

标签 mysql sql database join sql-update

这是任何数据库管理员都需要执行的常见任务。这是一个简单的黑名单。我有两个表,其共同字段为“电子邮件”。我想要做的是,如果电子邮件与第一个表匹配,则在第二个表上设置 active=0。

这是伪代码

即更新用户设置事件 =0(在第一个表上),其中表 2 上的电子邮件与表 1 上的电子邮件匹配

最优雅的方法是什么?

表 1 名称 = '用户' 表2 name = '黑名单'

这是更新后的脚本。我能够根据回复编写正确的答案。响应更新了表 2,而不是表 1 - 即相反。

这是完成的脚本...

update users u
inner join blacklist b on u.email=b.email
set u.active=0 ;

有一篇与此类似的帖子给出了答案,但是如何用他们给出的答案来做到这一点并不清楚。看看....

Update column based on matching values in other table in mysql

最佳答案

考虑:

update users u
inner join users_blacklist b on b.email = u.email
set u.active = 0

此查询的工作原理是在两个表的 email 列上联接,并仅更新匹配的记录。

这假设:

  • users 是要更新的表,而 users_blacklist 是黑名单表

  • email是黑名单表中的唯一键

关于mysql - 更新 MySQL 中 2 个表之间的电子邮件匹配 - 黑名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58784442/

相关文章:

mysql - 检索用户提供的数据 : any benefit for prepared statements

sql - mysql中根据经理&员工级别选择数据

MySQL auto_increment 不递增

mongodb - 伯克利数据库 : how does it compare to MongoDB?

MySQL几何交集产生非相交结果

sql - WHERE 子句中的不同和大小写

SQL 将空行与非空行合并

带if语句的sql查询

mysql - Python3、MySQL 和 SqlAlchemy — SqlAlchemy 是否始终需要 DBAPI?

mysql - 超过 10000 列的表的最佳结构