MySQL:在我的用户表中查找重复的名称

标签 mysql sql

我想查找其名称在我的用户表中至少出现两次的所有用户。 'email' 是唯一字段,但 'firstName' 和 'lastName' 的组合不一定唯一。

到目前为止,我提出了以下查询,它非常慢,我什至不确定它是否正确。请让我知道重写它的更好方法。

SELECT CONCAT(u2.firstName, u2.lastName) AS fullName
FROM cpnc_User u2
WHERE CONCAT(u2.firstName, u2.lastName) IN (

SELECT CONCAT(u2.firstName, u2.lastName) AS fullNm
FROM cpnc_User u1
GROUP BY fullNm
HAVING COUNT(*) > 1

)

此外,请注意,上面返回的名称列表至少出现两次(无论如何,我认为是这样),但我真正想要的是这些名称的所有用户“id”字段的完整列表。因此,每个名称至少出现两次,因此将与至少两个主键“id”字段相关联。

感谢您的帮助! 约拿

最佳答案

SELECT u.*
FROM cpnc_User u JOIN
(
    SELECT firstName, lastName
    FROM cpnc_User
    GROUP BY firstName, lastName
    HAVING COUNT(*) > 1
) X on X.firstName = u.firstName AND x.lastName = u.lastName
ORDER BY u.firstName, u.lastName

不需要拼接字段,2个字段分开使用即可

关于MySQL:在我的用户表中查找重复的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532186/

相关文章:

php - fatal error : Call to a member function prepare() on boolean in

mysql - Doctrine 多对多连接表未填充

mysql - 使用alter table添加分区失败

python - SQLAlchemy 嵌套 CTE 查询

mysql - 跨多个表保留插入顺序

php - 从 2 个表中提取信息

php - MySQL 错误 111 无法连接到服务器

mysql - 统计前值数据

sql - 在 SQL Server 2008 中检查 xml 字段的值

python - 以这种方式循环遍历 SQL 结果会返回期望的结果吗?