SELECT * FROM TABLE WHERE ID IN (SELECT MAX(ID) FROM TABLE GROUP BY COL1,COL2 )

解决方案 »

  1.   

    SELECT DISTINCT 字段 FROM TABLE 
    请查阅关键字DISTINCT的作用。
      

  2.   

    请参考http://expert.csdn.net/Expert/topic/1227/1227451.xml?temp=.7789728
      

  3.   

    二楼的是对的,其实那个max函数换成min也未尝不可如果你在这些头两个字段一样但其余字段不一样的记录中还要另行规定选取依据那么得使用带条件的关联子查询.
    实际上二楼兄弟的查询也可以写成下面这个样子:
    SELECT * FROM TABLEA A WHERE ID IN (SELECT MAX(ID) FROM TABLEB B WHERE B.COL1=A.COL1 AND B.COL2=A.COL2 AND [这里就加上你的其余筛选依据了])
      

  4.   

    CrazyFor(Fan),max(id)用min(id)代替也可以吧,另外,想请教group by除了可用在sum(),max(),min()上外,还能用在什么地方?
      

  5.   

    to 8250089() 
    select 语句在group by之后,除了group列之外,就只能输出汇总函数(sum(),max(),min(),average()等等)
    但汇总函数却不一定得和group一起用..
    实际上,group by子句完全可以用相关子查询代替,而且相关子查询能实现比group by更复杂的运算.
      

  6.   

    只是不知道group by和相关子查询哪一个效率更高..GZing
      

  7.   

    先多谢大家的意见了。不过我那个表是不能修改的。而且又没有ID字段,又怎能用max(id)。请问还有什么办法?
    我还发了一张贴,都是关于这个内容的,希望大家帮帮助。
    http://expert.csdn.net/Expert/topic/1230/1230639.xml?temp=.4270899
      

  8.   

    方法一:select identity(int,1,1) id ,* into temp from yourtable
    delete from temp where id not in (select min(id) from temp group by col1,col2)--col1,col是你判断重复的那两个字段select col1,col2,col3.... from temp此时temp中应该就是你需要的内容。如果正确
    truncate table yourtable
    insert yourtable select col1,col2,col3.... from temp
    drop table temp
      

  9.   

    select distinct( [field] ) from [Table] Where ....