sql 去重复行问题

lifang0803 2010-09-01 10:25:36
if not object_id('tb') is null
drop table tb
Go
Create table tb([pkid] int,[sid] int,[nid] int,[price] int)
Insert tb
select 12,123,124,100 union all
select 13,123,124,300 union all
select 14,133,134,100 union all
select 15,133,134,300 union all
select 16,164,165,200 union all
select 17,164,165,200 union all
select 18,174,1175,100 union all
select 21,173,174,100 union all
select 22,173,174,300 union all
select 31,183,184,100 union all
select 35,183,184,300
Go

要求:去除字段sid ,nid 重复的行。 并且取到的行的price 必须是最高的! 比如以上数据我取到的应该是 :
13,123,124,300
15,133,134,300
16,164,165,200
18,174,1175,100
22,173,174,300
35,183,184,300
谢谢!
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
挨踢直男 2010-09-01
  • 打赏
  • 举报
回复

select * from tb a where pkid =
(
select max(pkid) from tb where nid = a.nid and sid = a.sid and price =
(
select max(price) from tb where nid = a.nid and sid = a.sid
)
)
挨踢直男 2010-09-01
  • 打赏
  • 举报
回复
楼主的头像是楼主人吗?
RUNBEAR 2010-09-01
  • 打赏
  • 举报
回复

DELETE tb
WHERE EXISTS
(
SELECT * FROM tb tb2
WHERE tb.sid=tb2.sid AND tb.nid=tb2.nid
AND tb.price<=tb2.price
AND tb.pkid<tb2.pkid
)

下次20分,很少人回答你的。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧