SQL 查询以查找具有相同列值的多行

Posted

技术标签:

【中文标题】SQL 查询以查找具有相同列值的多行【英文标题】:SQL Query to Find Multiple Rows with Same Column Value 【发布时间】:2016-05-21 16:42:18 【问题描述】:

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

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

【问题讨论】:

您的 RDBM 是什么?在大多数情况下,更新命令可能会有所不同。 伟大的呼吁 - 它的 MySQL 【参考方案1】:

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

【讨论】:

以上是关于SQL 查询以查找具有相同列值的多行的主要内容,如果未能解决你的问题,请参考以下文章

用于连接 Oracle 中多行的列值的 SQL 查询

如果相同的列值在多行中重复,则 UPDATE - SQL / MYSQL

Spring - 通过@Value 读取具有多行属性值的 YAML

SQL / Hive 选择具有特定列值的第一行

如何在mysql中更新具有相同值的多行[关闭]

使用 LINQ 将具有相同值的多行列表连接成单行