请教一句 查询不重复数据的sql语句

来源:百度知道 编辑:UC知道 时间:2024/05/27 10:49:22
有这么一句sql
select distinct a,b,c from tb
结果是满足要求了,但是只显示了a,b,c3个字段。

我需要在上面基础上,同时显示tb表里的所有字段。
注意:我的需求是 表中那3个字段必须唯一,不重复。(是mssql语句)
结果数和 select distinct a,b,c from tb 结果数应该一样

在线等,马上揭贴 (继续等答案,尚无满意)


id a b c d
1 1 2 3 4
2 1 2 3 5
3 1 2 4 6
4 1 2 3 7

我需要得出的是
id a b c d
1 1 2 3 4 (id最小的)
3 1 2 4 6

我先暂时给你罗列几条数据,然后再回答你问题
a b c d
1 2 3 4
1 2 3 5
1 2 3 6

这样照你的说法,选出来的是把这三条都选出来了吧?
但是这三条里a,b,c字段都是重复的,也就是1,2,3
这样怎么办?

select a,b,c,d
from(select a,b,c,d,rank() over(partition by a,b,c order by d asc) 排名
from tb

where 排名<=1

分组排序,有点难度的

select * from (
select t1.*,(select count(1) from tb where a=t1.a and b=t1.b) as appCount
from tb t1
)
where appCount<=1

上面的只会显示没出现重复的,要是想重复的就出现一次,我只会ORACLE下的语句:(

楼主可以参考http://zhidao.baidu.com/question/84409328.html这个例子,我给他已经做了回答,你可能想要这种结果吧?如果不是,还有什么要求HI我

select * from tb group by a,b,c

all和distinct是不可以同时使用的 只能把tb表的所有字段都列到那