日期:2014-05-16  浏览次数:20982 次

排除掉重复结果的SQL语句求助
这样一张表
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