查询不返回重复记录-Mysql

查询不返回重复记录-Mysql,mysql,Mysql,我下面的查询没有返回重复的记录(Model_Number),这是有原因的。应该返回所有重复的Model_Number,下面的查询返回所有唯一的记录。Mysql总共有2,17092条记录 SELECT AZ_Code, Model_Number FROM dumpdata GROUP BY Model_Number HAVING COUNT( * ) >1 groupby子句意味着您只希望分组依据的每个唯一值都有一个结果(您可以查询不在其中的字段这一事实是MySQL的一个奇怪之处)。您可以

我下面的查询没有返回重复的记录(Model_Number),这是有原因的。应该返回所有重复的Model_Number,下面的查询返回所有唯一的记录。Mysql总共有2,17092条记录

SELECT AZ_Code, Model_Number
FROM dumpdata
GROUP BY Model_Number
HAVING COUNT( * ) >1

groupby
子句意味着您只希望分组依据的每个唯一值都有一个结果(您可以查询不在其中的字段这一事实是MySQL的一个奇怪之处)。您可以在操作符中使用

SELECT AZ_Code, Model_Number
FROM   dumpdata
WHERE  Model_Number IN (SELECT   Model_Number
                        FROM     dumpdata
                        GROUP BY Model_Number
                        HAVING   COUNT(*) > 1)

看复制品的一种方法

SELECT d.AZ_Code, d.Model_Number
FROM dumpdata d
WHERE
(SELECT COUNT(*) FROM dumpdata  WHERE d.Model_Number=dumpdata.Model_Number)>1

前面的答案应该是可行的,但我希望这个答案会快得多(因为MySQL通常连接到子查询比在其他地方使用它们更有效,比如在WHERE子句中)


因为您正在分组,所以它确实返回了重复项,但已分组(那些唯一的型号实际上是重复项)。如果您也希望看到重复项,因为它们在本页上是连接的subquery@Mihai我不明白你所说的“因为他们在这个子查询上是连接的”是什么意思此查询冻结phpmyadmin是否有其他方法运行查询并导出到CSV此查询冻结phpmyadmin,是否有其他方法运行query@user580950您有多少行?您还必须小心,在phpmyadmin中取消查询并不意味着服务器上的查询也将被取消。总共有217092条记录,我重新启动了服务器,以便phpmyadmin工作。我在运行查询时出错#1052-字段列表中的“型号编号”列不清楚。您是否对型号编号进行了索引?字段的数据类型是什么?让我重新启动服务器,再试一次Model_Number-varchar(255)当处理大量行时,索引可以帮助分组、排序、WHERE子句中的条件以及用于联接;而在处理字符数据时,好处更为明显;比较200万个未索引的整数要比比较200万个字符串快得多。
SELECT dd.AZ_Code, dd.Model_Number
FROM dumpdata AS dd
INNER JOIN (
   SELECT   Model_Number
   FROM     dumpdata
   GROUP BY Model_Number
   HAVING COUNT(*) > 1
) AS repeatedModels 
ON dd.Model_Number = repeatedModels.Model_Number