表的名字viviantest , 是同学的学号和分数 ,现在想列出, 选择两科以上同学的学号和分数怎么写呢 ?
number score
1 50
1 60
1 70
2 80
2 65
3 90
3 95
3 85
3 75
我想用sql 语句查询 , 选课在2门以上的所有的信息 我用这个 sal 语句 :
select * from viviantest group by number having count(number)> 2 结果是 1 50
3 90 大家帮忙看看怎么写 sql ?
number score
1 50
1 60
1 70
2 80
2 65
3 90
3 95
3 85
3 75
我想用sql 语句查询 , 选课在2门以上的所有的信息 我用这个 sal 语句 :
select * from viviantest group by number having count(number)> 2 结果是 1 50
3 90 大家帮忙看看怎么写 sql ?
解决方案 »
- 移动加权平均法的SQL,大家看看如何来写?
- 急求获取到所有子子节点记录的SQL,所有最后层的记录(但记录中不包括有子节点的记录)
- 请问两张表进行运算是否inner join 和 in 运算效率上没有任何差别呢
- SSMS客户端打开后出现的奇怪错误
- 如何防止SQL2005 数据库被攻击?
- sqlserver有没有类似oracle中nvl这样的函数?
- 误删了记录,该怎么恢复?
- 请教:把数据库中含有多个相同字段的多个表查询后生成一个新表的语句
- 关于SQLSERVER的备份与恢复,哪个51不放假的大兄弟救一救我
- 关于SQL2000中的Raiserror错误处理,谁有经验?
- MYSQL 一个字段 同时符合两个条件?
- [求]sql连表更新数据问题
where numuber in(
select numuber from viviantest group by number having count(number)> 2
)
select * from viviantest having count(number)> 2
select * from tb t where not exists(select 1 from tb where number=t.number and score<t.score)
go
create table [viviantest] (number int,score int)
insert into [viviantest]
select 1,50 union all
select 1,60 union all
select 1,70 union all
select 2,80 union all
select 2,65 union all
select 3,90 union all
select 3,95 union all
select 3,85 union all
select 3,75select * from [viviantest]--2K5以上版本适用
SELECT number,score
FROM (
SELECT A.*,NO = ROW_NUMBER() OVER (PARTITION BY number ORDER BY GETDATE())
FROM [viviantest] AS A
WHERE EXISTS ( SELECT number
FROM [viviantest]
WHERE number = A.number
GROUP BY number
HAVING COUNT(number) > 2 ))T
WHERE no = 1/*
number score
1 50
3 90*/
FROM (
SELECT A.*
FROM viviantest A
WHERE EXISTS ( SELECT number
FROM viviantest
WHERE number = A.number
GROUP BY number
HAVING COUNT(number) > 2 )) T
这么写对了 ! 请教8楼上 为什么要用 WHERE number = A.number 这个语句 ? 谢谢 !
and exists(select 1 from tb where number=t.number and score<>t.score)只顯示重新且只顯示一條記錄