article_title
的列。假设表名称为articles
。我需要找出多个记录中article_title
数据相同的记录。这就是我得到的:
select a.*
from articles a
where a.article_title = (select article_title
from articles
where article_title = a.article_title
AND a.id <> articles.id)
#1 楼
HAVING是一个很棒的聚合筛选器。 (http://dev.mysql.com/doc/refman/5.6/en/group-by-extensions.html)例如,选择出现次数大于的article_titles:SELECT count(*), article_title
FROM articles
GROUP BY article_title
HAVING COUNT(*) > 1;
在SELECT和GROUP BY子句中添加列使您可以基于多个列的组合键来查找重复项。
#2 楼
您的问题可以通过以下查询解决:SELECT *
FROM article
WHERE article_title IN (SELECT *
FROM (SELECT article_title
FROM article
GROUP BY article_title
HAVING COUNT(article_title) > 1)
AS a);
评论
这是正确的答案,因为它实际上返回包含重复项的行
–etayluz
18/12/5在19:00
#3 楼
有一个表,该表的列名为article_title。假设
表名是article。我需要找出多个记录中
article_title数据相同的记录。
听起来像我,您还需要具有ID,因为查找基于
article_title
的记录,因为您有重复项使用GROUP BY的基本最小/最大值(如果重复超过2个,您将错过id) br />或返回非正规化以为LIFO ID(旧ID重复生成)生成CSV,但您知道所有ID在这里。.
评论
@jkushner:但要注意MySQL的GROUP BY实现中的怪癖(或某些人可能会发现的错误):mysqlperformanceblog.com/2006/09/06/…
– a_horse_with_no_name
13年11月30日在8:44