sqlserver去重保留code最小的值

整体

select*   from BaseDoctor   
where  name in (select  name from BaseDoctor group by  hiscode,name having count(*) > 1) 
and code not in (select min(code) from BaseDoctor group by  hiscode,name having count(*)>1) 

思路
1查到有重复的数据
在这里插入图片描述
2查询有重复的数据有那些人

select  name from BaseDoctor group by  hiscode,name having count(*) > 1

在这里插入图片描述
ps验证看一下在这里插入图片描述
3查询这些重复的人code最小的是那些

select min(code) from BaseDoctor group by  hiscode,name having count(*)>1

在这里插入图片描述
总的就是先查询哪些人需要删除,再查应该留下的最小代码
然后过滤,查询,然后改成 delete
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在SQL Server中,要去重保留最新的时间,可以使用以下的方法: 1. 使用ROW_NUMBER()函数和PARTITION BY子句:首先,使用ROW_NUMBER()函数来给每一行分配一个行号,然后根据需要去重的列进行分区(使用PARTITION BY子句)。最后,按照时间降序进行排序,使得最新的时间排在每个分区的第一行。具体的SQL语句如下: ``` WITH CTE AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY column1,column2 ORDER BY time_column DESC) AS row_num FROM your_table ) SELECT * FROM CTE WHERE row_num = 1 ``` 请将上述代码中的`your_table`替换为实际的表名,`column1`和`column2`替换为需要进行去重的列名,`time_column`替换为时间列的列名。 2. 使用子查询和JOIN语句:首先,使用子查询找到每个分组的最新时间。然后,使用这些最新的时间和其他的条件,与原始表进行JOIN操作,从而得到保留最新时间的去重结果。具体的SQL语句如下: ``` SELECT t1.* FROM your_table t1 JOIN ( SELECT column1, column2, MAX(time_column) AS max_time FROM your_table GROUP BY column1,column2 ) t2 ON t1.column1 = t2.column1 AND t1.column2 = t2.column2 AND t1.time_column = t2.max_time ``` 请将上述代码中的`your_table`替换为实际的表名,`column1`和`column2`替换为需要进行去重的列名,`time_column`替换为时间列的列名。 以上两种方法都可以实现去重保留最新的时间。具体选择哪种方法取决于实际情况和性能要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值