日期:2014-05-19  浏览次数:20500 次

如何distinct去除多余行?
id               c1               c2             c3           c4
  1                 1 2 4           Peter
  2                 1 2 4           Wang
  3                 1 2 4           David
  4                 1 3 4           Ben
  5                 1 3 4           Su
  6                 2               5                 6             Ru
  7                 2               5                 6             Song
简单数据如上
想查出结果:
id               c1               c2               c3           c4
1                   1                 2                 4             Peter
2                   1                 3                 4             Ben
3                   2                 5                 6             Ru
也就是c1,c2,c3三列数据有重复行,如何消除重复,只保留重复的一行?
各位帮忙呀!!


------解决方案--------------------
才看出来id需要排序,要是写的话太长,用这个改一下可得到顺序id
select id= (select count(*) from b where id> = c.id),c.c1,c.c2,c.c3.c.c4 from b c

------解决方案--------------------
select * from tb a
where not exists(select * from tb where c1=a.c1 and c2=a.c2 and c3=a.c3 and id <a.id )