首页 新闻 会员 周边

求一条SQL查询语句

0
[已关闭问题]

表table如下:

姓名     科目     成绩
张三     语文     85
张三     数学     74
李四     化学     98
李四     语文     65
王五     体育     85
王五     化学     95
用一名SQL语句得到成绩都超过80分的姓名,这句SQL语句应该怎么写?

赖振强的主页 赖振强 | 初学一级 | 园豆:200
提问于:2009-02-09 19:41
< >
分享
其他回答(3)
0

select 姓名
from (
    select *
    from [table]
    where 成绩 > 80
    ) as t
group by 姓名
having count(*) = (select COUNT(distinct 科目) from [table])

deerchao | 园豆:8367 (大侠五级) | 2009-02-09 20:37
0

select distinct(姓名)

from table A

where not exists (select 1  from table B where A.姓名 =  B.姓名 and 成绩<80)

Christmas | 园豆:200 (初学一级) | 2009-02-09 21:56
0

http://news.csdn.net/n/20061123/98120.html 看了这个你就知道怎么写了.

黄尚 | 园豆:272 (菜鸟二级) | 2009-02-09 22:52
0

deerchao的也可以写成

select distinct 姓名
from [Table]
where 成绩 > 80
group by 姓名
having count(*) = (select COUNT(distinct 科目) from [Table])

MSSQL执行的计划是一样的。我佩服他的是后面的用法:(select COUNT(distinct 科目) from [Table])。我从来没有把count与distinct一起用过的。

Christmas的对于如果某个学生没有考试,没有成绩记录(不是成绩为0)的话会不对。

yzx99 | 园豆:137 (初学一级) | 2009-02-11 16:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册