我有一个用户表,其中的一列称为电子邮件,一列称为启用。我正在寻找使用相同电子邮件的所有用户。如果这些用户中的一个启用为nil,我想将该用户的登录名重置为其名字(另一列)。注意:最多应有两个用户共享一封电子邮件。

我才刚刚开始学习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!

最佳答案

如果您使用的是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

关于mysql - SQL查询以查找具有相同列值的多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35330300/

10-11 07:18