SQL按某字段去重 保留按某个字段排序最大值

按某字段去重 保留按某个字段排序最大值

select * from tablename as a
where not exists (
select 1 from tablename as b
 where b.name=a.name and b.id>a.id)

talename:要去重复的表

name:需要去重复的字段,可以有多个字段

ID:取id字段最大

实例:


查询这批数据ChildCode为000或00Y的,State不为1的,CatalogCode重复的情况下根据Cd_batch筛选最大的,如果Cd_batch相同根据TaskVersion筛选最大的数据
sql:

SELECT c.id,
c.rowGuid,
c.CatalogCode,
c.Cd_operation,
c.cd_batch,
c.TaskName,
c.TaskType,
c.Cd_time,
c.ItemCode,
c.TaskState,
c.DataSource FROM
(SELECT a.id,a.rowGuid,a.Cd_operation,a.cd_batch,a.TaskName,a.TaskType,a.Cd_time,a.ItemCode,a.DataSource,a.CatalogCode,a.TaskState,a.TaskVersion,a.ChildCode,a.State
FROM dn_task_directory a INNER JOIN
(SELECT ItemCode,MAX(Cd_batch) as max_cdbatch FROM dn_task_directory
GROUP BY ItemCode DESC) b
ON a.ItemCode=b.ItemCode AND a.Cd_batch=b.max_cdbatch) as c INNER JOIN
(SELECT ItemCode,MAX(TaskVersion) as max_taskversion
FROM dn_task_directory
GROUP BY ItemCode DESC) d ON c.ItemCode=d.ItemCode AND c.TaskVersion=d.max_taskversion
AND (c.ChildCode=‘000’ OR c.ChildCode=‘00Y’)
AND c.State !=‘1’

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值