根据多字段去重


有重复数据主要有一下几种情况:

1.存在两条完全相同的纪录      这是最简单的一种情况,用关键字distinct就可以去掉			example: select distinct * from table(表名) where (条件)

2.存在部分字段相同的纪录(有主键id即唯一键)    如果是这种情况的话用distinct是过滤不了的,这就要用到主键id的唯一性特点及group by分组	  example: select * from table where id in (select max(id) from table group by [去除重复的字段名列表,....])

eg:

SELECT count(1)
FROM
TCHotelLog.dbo.ELongRequestErrorLog erel WITH (NOLOCK)
LEFT JOIN TCHotelResource.dbo.HotelInfo hi WITH (NOLOCK)
ON hi.Id = erel.HotelId
LEFT JOIN TCHotelResource.dbo.RoomType rt WITH (NOLOCK)
ON rt.Id = erel.RoomTypeId
LEFT JOIN TCHotelResource.dbo.HotelPolicy hp WITH (NOLOCK)
ON hp.Id = erel.PolicyId
WHERE
erel.ErrorTime >= ‘2014-6-13‘
AND erel.RefId IN (9516406, 1646048)
AND erel.Id IN (SELECT max(Id)
FROM
TCHotelLog.dbo.ELongRequestErrorLog WITH (NOLOCK)
GROUP BY
MemberId
, PolicyId)


3.没有唯一键ID   这种情况我觉得最复杂,目前我只会一种方法,有那位知道其他方法的可以留言,交流一下:   example: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

根据多字段去重

时间: 2024-08-15 09:44:32

根据多字段去重的相关文章

mysql字段去重方式

一直找不出某个字段去重的前提下,还可以显示其他字段的数据 下面是解决方法: SELECT *, COUNT(DISTINCT( province)) FROM area_info WHERE type=1000 GROUP BY province

对数据库表中的某一字段去重分组排序

1.问题背景    某数据库t_tab_ab中有两个字段a和b,如下所示:    查询前:                 查询后:    a     b                  a     b    1     2                  1     2    1     3                  2     3    1     4                  3     4    1     5    2     3    2     4    2  

sql 语句查询 按某字段去重 保留按某个字段排序top1

例子:      建表: create table tablename  (id int identity(1,1),attachid int,name varchar(10)) insert into tablename  values(23,'sss') insert into tablename   values(33,'sdfs') insert into tablename   values(33,'4434') insert into tablename   values(45,'d

list集合中指定字段去重

在开发中,有时会需要指定字段去重,以下为实现方法: 假设有个房地产权的类,其中宗地代码ZDDM值重复,而我们在前端页面显示时,只需要一条数据,因为公共字段都一样: IEqualityComparer需引入程序集——using System.Collections; //集合指定字段去重(宗地代码) List<FDCQClient> resultFDCQ = new List<FDCQClient>(); var resultdis=resultFDCQ.Distinct(new M

LINQ解决根据某个字段去重

想要List结果重复 的数据很简单,只要.Dinstinct()就好了 但是如果想要根据某个字段去除重复的数据,上面的方法就帮不上忙了,我们需要重写一个方法,直接上例子吧 [Serializable] public class HomePageUserModel { public int UserID { get; set; } public string TitleUserName { get; set; } public string ShowUserName { get; set; } p

SQLServer单个字段去重的方法

单个字段去重并选出每个分组里面的最大值对应的行: Row_Number去重: select * from (select *,row_number()over(partition by Servername order by Check_Date desc) Suquence from AuditItem) s where s.Suquence=1 Croup by写法: select * from [dbo].[AuditItem] where Check_Date in (select Ma

关联数组根据某个字段去重

/* * 关联数组根据某个字段去重 * */ public function array_unset_tt($arr,$key='mobile'){ //建立一个目标数组 $res = array(); foreach ($arr as $value) { //查看有没有重复项 if(isset($res[$value[$key]])){ unset($value[$key]); //有:销毁 }else{ $res[$value[$key]] = $value; } } return $res

PHP二维数组多字段去重

二位数组多字段去重 不指定一个字段去重,判断所有字段是否有重复 $arr = [ 0 => [ 'name' => 'name1', 'age' => '10' ], 1 => [ 'name' => 'name1', 'age' => '11' ], 2 => [ 'name' => 'name2', 'age' => '10' ], 3 => [ 'name' => 'name2', 'age' => '10' ] ]; 方法:

Mysql 多字段去重

使用group by去重现在有如下表 id name age1 张三 232 李四 343 张三 234 李四 32 需求 : 按照name和age字段联合去重 sql如下 select * from user group by name,age 原文地址:https://www.cnblogs.com/baker95935/p/10031730.html