如何去掉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
假设你的表名是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]
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
select min(name) ,min(id) from table group by name ,id
delete from t where t.c1 in(select t.c1 from t group by t.column_name having count(t.c1) >1)
这样可以的,我试过
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中使用的
select * from 你的表名 a where id=(select min(id) from 你的表名 where name=a.name)
思想是在查询之前先把数据库表textTable中的第一行复制到sid里在去,然后让sid和下面的每一行进行比较
取所有相同的行的最小的一下,也可以取最大的,结果是一样的。这样让所有的行都比较不就得到不重复的数据了吗。