首页 新闻 搜索 专区 学院

sql 查询语句

-1
[待解决问题]

取出Sno和ClassNo不重复的记录包含Name属性  效果图

恋人星空的主页 恋人星空 | 菜鸟二级 | 园豆:260
提问于:2014-07-24 10:45
< >
分享
所有回答(2)
0

没明白你得需求

对于SNO=1 AND CLASSNO=1,name有张帅,对的,两个值,你想怎么显示?

我是大菠萝 | 园豆:365 (菜鸟二级) | 2014-07-24 13:25

Sno+ClassNo不重复

支持(0) 反对(0) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-07-24 16:30

@天空10047:

select a.* from tb a join

(select sno,classno,count(1) from tb

group by sno,classno having count(1)>1) b

on a.sno=b.sno and a.classno=b.classno

支持(0) 反对(0) 我是大菠萝 | 园豆:365 (菜鸟二级) | 2014-07-25 10:37

@我是大菠萝: 实践检验

支持(0) 反对(1) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-07-29 08:46

@天空10047: 

select a.* from tb a join

(select sno,classno,count(1) cnt from tb

group by sno,classno having count(1)>1) b

on a.sno=b.sno and a.classno=b.classno

 

count(1)这里少个别名

支持(0) 反对(0) 我是大菠萝 | 园豆:365 (菜鸟二级) | 2014-07-29 10:39
1

二楼正解,2005以上版本还可以用开窗函数的方法实现:

select sno, name, classno from
(
select * , count(name) over(partition by sno,classno) as counter from tb
) t
where counter = 1

fhyf | 园豆:204 (菜鸟二级) | 2014-07-28 15:16

实践

支持(0) 反对(1) 恋人星空 | 园豆:260 (菜鸟二级) | 2014-07-29 08:47

@天空10047: 你的意思是有重复的sno+classno的记录要取第一条?

select sno, name, classno from
(
select * ,row_number() over(partition by sno,classno order by sno,classno) as num from tb
) t
where num = 1

支持(0) 反对(0) fhyf | 园豆:204 (菜鸟二级) | 2014-07-29 19:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册