SQL DISTINCT去掉重复的数据统计方法
(2009-01-13 15:05:43)
标签:
sqldistinct杂谈 |
分类: SQL |
SELECT指令让我们能够读取表格中一个或数个栏位的所有资料。这将把所有的资料都抓出,无论资料值有无重复。在资料处理中,我们会经常碰到需要找出表格内的不同资料值的情况。换句话说,我们需要知道这个表格/栏位内有哪些不同的值,而每个值出现的次数并不重要。这要如何达成呢?在SQL中,这是很容易做到的。我们只要在SELECT后加上一个DISTINCT就可以了。 DISTINCT的语法如下:
举例来说,若要在以下的表格,Store_Information,找出所有不同的店名时,Store_Information 表格
store_name |
Sales |
Date |
1 |
$1500 |
Jan-05-1999 |
2 |
$250 |
Jan-07-1999 |
1 |
$300 |
Jan-08-1999 |
3 |
$700 |
Jan-08-1999 |
我們就鍵入,
SELECT DISTINCT store_name FROM Store_Information
結果:
1
2
3
DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。
select count(distinct
t.destaddr) 可以统计出一个月中的用户数量。 关于如何快速得知里面每一个号码重复的个数问题的解答:
利用分组函数的SQL语句 group by 解决重复数据的个数统计 适用于各种关系型数据库,如oracle,SQL Server
查询重复的数据 select v.xh,count(v.xh) num from sms.vehicle v group by v.xh having count(v.xh)=2; 删除重复的数据 create table mayong as (select distinct* from sms.vehicle); delete from sms.vehicle ; insert into sms.vehicle select * from mayong; 在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新的一条记录,我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。
下面是查询重复数据的一个例子:
select a.rowid,a.* from 表名 a 下面我就来讲解一下,上面括号中的语句是查询出重复数据中rowid最大的一条记录。
而外面就是查询出除了rowid最大之外的其他重复的数据了。 如果想删除一个表的重复数据,可以先建一个临时表,将去掉重复数据后的数据导入到临时表,然后在从临时表将数据导入正式表中,如下:
INSERT INTO t_table_bak |