可以用group by和count结合找出具有重复值的项,然后用select具体查出重复的内容
1. SELECT * FROM (SELECT cf.*, COUNT(*) counts FROM cf GROUP BY cf.phone) a WHERE a.counts>1;
这条sql语句中的子查询,对数据库字段phone进行group by分组后,显示 不重复的信息和每个分组中含有记录条数的数量,此处的count(*)统计的不是分组的数量,而是每个分组中包含记录的数量。
然后对子查询结果再次进行筛选,仅显示counts即count(*)结果大于1的记录,之后就可以分别查看这些重复的记录是哪几条了
如果使用having count(*)的话可以写得更加简洁:
select cf ,count(*) from cf group by cf.name having count(*)>1;
2. 如果要获得分组数,可以这么写:
SELECT COUNT(1) FROM (SELECT cf.* FROM cf GROUP BY cf.phone) a ;
这时候会获得唯一的一条记录就是分组书
注意group by和count不同组合方式得到的不同结果