(1)distinct
关键词 distinct用于返回唯一不同的值,可作用于单列和多列
但必须将其放在开头,否则会提示错误
而若在其后添加多个变量名,则返回的将是这多个变量名不同时重复的列,因而使用distinct筛选某字段不重复记录时无法同时得到其他的信息。
此时可以采用group by函数
(2)group by
与聚合函数联用可以在取多个字段的同时去重其中一个字段
例如要显示的字段为A、B、C三个,而A字段的内容不能重复,可以如下语句:
select A, max(B), max(C), count(*) 重复次数 from [table]
where [条件] group by A having count(*) >= (int n);
如果在上句中having加 count()>1,就可以查出记录A所有有重复的记录;
count()>=1 就可以查出所有的记录,但重复的只显示一条,并且后面有显示重复的次数。
推荐使用:
SELECT * FROM t1 WHERE ROWID IN (SELECT MAX(ROWID) FROM t1 GROUP BY id, name;
上式可以对拥有相同id和name的数据进行去重。
ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插