Php 如何编写mysql5查询以从表中查找重复行?

Php 如何编写mysql5查询以从表中查找重复行?,php,mysql,sql,Php,Mysql,Sql,嗨,我有一张这样的桌子 ID UserName 1 test@test.com 2 test@test.com 3 john@stack.com 4 test@test.com 5 adam@stack.com 6 john@stack.com ID用户名 1.test@test.com 2.test@test.com 3.john@stack.com 4.test@test.com 5.adam@stack.com 6.john@stack.

嗨,我有一张这样的桌子

ID UserName 1 test@test.com 2 test@test.com 3 john@stack.com 4 test@test.com 5 adam@stack.com 6 john@stack.com ID用户名 1.test@test.com 2.test@test.com 3.john@stack.com 4.test@test.com 5.adam@stack.com 6.john@stack.com 我需要这样的输出。我只需要重复的行列表。如何使用mysql查询创建这种输出

ID UserName Count 1 test@test.com 3 2 john@stack.com 2 ID用户名计数 1.test@test.com3. 2.john@stack.com2. 请帮帮我。
谢谢。

因为ID不是唯一的,所以从表中获取唯一用户名的总和有点不合逻辑

如果不需要ID,我们可以通过单个查询获得结果

SELECT UserName, COUNT(UserName) AS Count
FROM TableName GROUP BY UserName
HAVING COUNT(UserName) > 1;

但是对于结果中的ID,它将是一个更复杂的查询,包括子查询和内部表。

看起来您正在尝试提取以下数据:

  • 给定用户名的第一个ID
  • 用户名本身
  • 该用户名的ID总数
此查询应实现以下功能:

SELECT
  MIN(id),
  UserName,
  COUNT(id)
FROM users
GROUP BY UserName;

嗨,这是正确的答案

SELECT UserName, COUNT(UserName) AS Count FROM TableName GROUP BY UserName HAVING COUNT(UserName) > 1; 选择用户名,计数(用户名)作为计数 按用户名从TableName组 计数(用户名)>1;
不久前,我遇到了同样的问题,并像这样解决了它(据我记忆所及):

您通过选择重复的ID来联接表。在这种情况下,应针对重复值测试的字段是
type_id
temp
。如果需要更多或更少应视为重复的字段,可以调整这些字段

我不知道这对你的情况是否有帮助,也不知道是否可以用一种更简单的方式来做,所以我准备好接受否决票;-)


编辑:删除ypercube建议的最后一个条件
和tableA.id
,因为它会导致0个结果。

为什么
john@stack.com
的结果中有一个
ID
2
?您好,您使用的是SUM,它将不起作用。我尝试了它的工作选择用户名,COUNT(UserName)作为TableName组的COUNT,用户名的COUNT(UserName)>1;
SUM
用户名不符合逻辑。您可以对它们进行计数。您的查询将精确显示
0
行。连接条件中既有
tableA.id=t.id
又有tableA.id
。如果删除最后一个条件,它将起作用。但没有理由如此复杂。一个简单的小组可以解决大多数这样的问题。好的,谢谢。是的,正如我所说,我怀疑这是最简单的方法,但至少我想分享这个解决方案。欢迎。您还可以从子查询中删除
独立的
。这是多余的,因为“分组依据”
。在需要从表中显示更多行(分组行除外)的情况下,您的建议会有所帮助。然后接受Talha的答案。你不需要自己发布答案。还要注意的是,MySQL中的
COUNT(*)
COUNT(a_字段)
更快。在这种情况下,结果也是一样的。 SELECT UserName, COUNT(UserName) AS Count FROM TableName GROUP BY UserName HAVING COUNT(UserName) > 1;
SELECT *
FROM tableA INNER JOIN
(SELECT DISTINCT MAX(id) as id, type_id, temp FROM tableA GROUP BY type_id, temp) AS t
ON tableA.id = t.id
AND tableA.type_id = t.type_id
AND tableA.temp = t.temp