首页 新闻 赞助 找找看

sql去重复值,但保留第一个重复值的问题.请高手赐教

1
悬赏园豆:20 [已解决问题] 解决于 2009-06-05 15:11

如何去掉Name中重复的值,但保留重复值的第一个结果,比如Name字段“陈明”有三个值,去掉第二个和第三个,但保留第一个,结果结构仍然如下,只是Name字段必须为空.

 

ID   Name

-------------------------------------

10   陈海鹏
12   陈明
34   陈明
35   陈明
43   黄悦
48   黄悦
36   刘定山
37   刘定山
38   刘定山
39   刘定山
40   刘定山
41   刘定山
42   刘定山
4    刘定山
5    刘定山
56   刘思雨
57   刘思雨
45    马明宇
11   美加净
8    美加净
13   美加净
14   美加净
15   美加净

 

要求得到结果

ID  Name

----------------------------------------

10   陈海鹏
12   陈明
34   
35   
43   黄悦
48   

 

i.Net的主页 i.Net | 初学一级 | 园豆:54
提问于:2009-06-04 10:13
< >
分享
最佳答案
0

假设你的表名是tb1那么语句如下:

select tb1.[id],isnull(tb2.[name],'') as [name] from tb1
left join
(select min([id]) as [id],[name] from tb1 group by [name]) tb2
on tb1.[id]= tb2.[id]
order by tb1.[name]

| 小虾三级 |园豆:770 | 2009-06-05 13:44
其他回答(5)
0

WITH TEMPTABLE AS
(
   SELECT ID,NAME
   FROM TABLENAME
   WHERE ID IN(
                          SELECT MIN(ID)
                          FROM TABLENAME
                          GROUP BY NAME
                        )
)
SELECT I.ID,P.NAME
FROM TABLENAME AS I
LEFT JOIN TEMPTABLE  AS P ON I.ID=P.ID

周强 | 园豆:266 (菜鸟二级) | 2009-06-04 10:41
1

select  min(name) ,min(id)  from table group by name ,id

帅虫哥 | 园豆:207 (菜鸟二级) | 2009-06-04 11:12
0

delete from t where t.c1 in(select t.c1 from t group by t.column_name having count(t.c1) >1)

这样可以的,我试过

yuji163sk | 园豆:115 (初学一级) | 2009-06-04 11:29
0

delete from vitae a
where (a.Id,a.name) in   (select Id,name from vitae group by Id,name having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by Id,name having count(*)>1)    这是ORACLE中使用的

革命军马前卒 | 园豆:255 (菜鸟二级) | 2009-06-04 12:44
1

select * from 你的表名 a where id=(select min(id) from 你的表名 where name=a.name)

思想是在查询之前先把数据库表textTable中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。这样让所有的行都比较不就得到不重复的数据了吗。

苏飞 | 园豆:2024 (老鸟四级) | 2009-06-04 13:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册