SQL字段重复值的查询与筛选
1、要查询指定字段有重复值的记录
select fieldname, count(fieldname) as ccount from tablename group by fieldname having(fieldname) > 1
2、要查询过虑指定字段重复值的所有记录
select distinct fieldname from tablename
实例:
在以下数据表中执行上述两种操作
1、筛选出有重复的数据
select recval,count(recval) as ccount from rectable group by recval
进一步用having筛选出有重复的记录
select recval,count(recval) as ccount from rectable group by recval having count(recval)>1
用这种方式很容易就找到重复的记录,便于进行数据处理。
2、过虑掉重复数据
select distinct recval from rectable
这里需注意distinct可以对多字段重复筛选,但会产生无重复字段对有重复字段的忽略,即在多字段中,只要有未重复记录,都会返回结果。
在此例子中,同时对recval、recno两个字段进行重复过滤,虽然recval有重复记录,但由于recno字段没有重复记录,所以查询结果将recno中未重复的全部返回。
所以根据以上简单测试,distinct更多地应用于单字段重复过滤查询。
在实际使用中,第一种语句更为常用,因为重复记录总是要重点查找的目标。