2016-02-11 135 views
1

我有一个用户表,其中包含一个名为email的列和一个名为enabled的列。我正在寻找使用同一封电子邮件的所有用户。如果其中一个用户已启用为零,我想将该用户的登录名重置为其名(另一列)。注意:最多应有两个用户共享一封电子邮件。SQL查询以查找具有相同列值的多行

我刚开始学习SQL。我将如何得到这个查询工作?我感谢耐心!

update users 
set users.login = users.first_name 
from users u1 inner join users u2 
on u1.email = u2.email 
    where u1.id != u2.id 
    and u2.enabled is null 

我的RDBMS是MySQL!

+1

什么是你的RDBM的?大部分时间更新命令可能会有所不同。 –

+0

伟大的呼唤 - 它的MySQL – CarlyQ

回答

0

如果您正在使用MySQL那么;

update users u1 
join users u2 on 
u1.email = u2.email and u1.enable is null 
set u1.login = u1.first_name 

sql fiddle demo

相关问题