这样一张表
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值最大的那一条。
谢谢了。
------解决方案--------------------
- SQL code
select * from 这样一张表 a where not exists (select 1 from 这样一张表 where PID=a.PID and State>a.State)
------解决方案--------------------
写错了。应该是ID最大的,修改如下
- SQL code
select * from 这样一张表 a where not exists (select 1 from 这样一张表 where PID=a.PID and ID>a.ID)
------解决方案--------------------
GOOD JOB!~ADMIRE~
------解决方案--------------------
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
------解决方案--------------------
前几天刚遇到了这个问题,很不错,也很精典,解决方法
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