排除掉重复结果的SQL语句求助

tianjy 2010-03-09 09:12:02
这样一张表
ID PID State
1 1 aaaaa
2 1 bbbbb
3 2 ccccc
4 2 ddddd
5 1 b1b1b1
6 2 a1a1a1
7 3 d2dd2d
8 3 343434


要求:查询结果为
5 1 b1b1b1
6 2 a1a1a1
8 3 343434

也就是说PID相同的记录只取ID值最大的那一条。
谢谢了。
...全文
158 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
长风dad 2010-03-12
  • 打赏
  • 举报
回复
前几天刚遇到了这个问题,很不错,也很精典,解决方法

select e.ID,e.Pid,e.State from 这一张表 as e,(select ParentId,max(id) as pp from 这一张表 group by PID) b where e.id=b.pp
wwwwb 2010-03-10
  • 打赏
  • 举报
回复
select a.* from tt a inner join (select PID,max(id) as max_id from tt group by PID) b
on a.PID=b.PID and a.ID=b.max_id
danberlove 2010-03-09
  • 打赏
  • 举报
回复
GOOD JOB!~ADMIRE~
ACMAIN_CHM 2010-03-09
  • 打赏
  • 举报
回复
写错了。应该是ID最大的,修改如下

select *
from 这样一张表 a
where not exists (select 1 from 这样一张表 where PID=a.PID and ID>a.ID)


或者

select a.*
from 这样一张表 a inner join (select PID,max(id) as max_id from 这样一张表 group by PID) b
on a.PID=b.PID and a.ID=b.max_id
ACMAIN_CHM 2010-03-09
  • 打赏
  • 举报
回复
select *
from 这样一张表 a
where not exists (select 1 from 这样一张表 where PID=a.PID and State>a.State)

7,712

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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