二楼的是对的,其实那个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 [这里就加上你的其余筛选依据了])
方法一: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
select distinct( [field] ) from [Table] Where ....
请查阅关键字DISTINCT的作用。
实际上二楼兄弟的查询也可以写成下面这个样子:
SELECT * FROM TABLEA A WHERE ID IN (SELECT MAX(ID) FROM TABLEB B WHERE B.COL1=A.COL1 AND B.COL2=A.COL2 AND [这里就加上你的其余筛选依据了])
select 语句在group by之后,除了group列之外,就只能输出汇总函数(sum(),max(),min(),average()等等)
但汇总函数却不一定得和group一起用..
实际上,group by子句完全可以用相关子查询代替,而且相关子查询能实现比group by更复杂的运算.
我还发了一张贴,都是关于这个内容的,希望大家帮帮助。
http://expert.csdn.net/Expert/topic/1230/1230639.xml?temp=.4270899
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