我想查找其名称在我的用户表中至少出现两次的所有用户。 '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/