数据库查询结果去重(distinct与group by)

转载:https://blog.csdn.net/HD243608836/article/details/80088173

一般情况下,数据库去重复有以下那么三种方法:

第一种:

  两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:

1
SELECT  DISTINCT  FROM  TABLE

第二种:

  两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及group by分组。例:

1
SELECT  FROM  TABLE  WHERE  ID  IN  ( SELECT  MAX (ID)  FROM  TABLE  GROUP  BY  [去除重复的字段名列表,....])

第三种:

  两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:

1
2
3
4
5
6
//创建临时表,并将数据写入到临时表
SELECT  IDENTITY(INT1,1)  AS  ID,*  INTO  NEWTABLE(临时表)  FROM  TABLE
//查询不重复的数据
SELECT  FROM  NEWTABLE  WHERE  ID  IN  ( SELECT  MAX (ID)  FROM  NEWTABLE  GROUP  BY  [去除重复的字段名列表,....])
//删除临时表
DROP  TABLE  NEWTABLE


转载自:

https://zhidao.baidu.com/question/509138775.html?qbl=relate_question_1&word=DISTINCT%20%BF%C9%D3%C3%CC%E6%BB%BB

转载:https://blog.csdn.net/HD243608836/article/details/80088173

一般情况下,数据库去重复有以下那么三种方法:

第一种:

  两条记录或者多条记录的每一个字段值完全相同,这种情况去重复最简单,用关键字distinct就可以去掉。例:

1
SELECT  DISTINCT  FROM  TABLE

第二种:

  两条记录之间之后只有部分字段的值是有重复的,但是表存在主键或者唯一性ID。如果是这种情况的话用DISTINCT是过滤不了的,这就要用到主键id的唯一性特点及group by分组。例:

1
SELECT  FROM  TABLE  WHERE  ID  IN  ( SELECT  MAX (ID)  FROM  TABLE  GROUP  BY  [去除重复的字段名列表,....])

第三种:

  两条记录之间之后只有部分字段的值是有重复的,但是表不存在主键或者唯一性ID。这种情况可以使用临时表,讲数据复制到临时表并添加一个自增长的ID,在删除重复数据之后再删除临时表。例:

1
2
3
4
5
6
//创建临时表,并将数据写入到临时表
SELECT  IDENTITY(INT1,1)  AS  ID,*  INTO  NEWTABLE(临时表)  FROM  TABLE
//查询不重复的数据
SELECT  FROM  NEWTABLE  WHERE  ID  IN  ( SELECT  MAX (ID)  FROM  NEWTABLE  GROUP  BY  [去除重复的字段名列表,....])
//删除临时表
DROP  TABLE  NEWTABLE


转载自:

https://zhidao.baidu.com/question/509138775.html?qbl=relate_question_1&word=DISTINCT%20%BF%C9%D3%C3%CC%E6%BB%BB

猜你喜欢

转载自blog.csdn.net/ahaotata/article/details/84956312