读书人

一个sql查询,请高手指教,该怎么处理

发布时间: 2012-01-20 18:53:53 作者: rapoo

一个sql查询,请高手指教
张三 语文81
张三 数学75
李四 语文76
李四 数学90
王五 语文81
王五 数学100

我想显示语文和数学都大于80分的人的名字
因为本人SQL是弱项,总感觉自己写的这个感觉效率好低,用的笨方法
请问高手有没有别的方法

select distinct mingzi from students
where
students.mingzi in
(
select mingzi from students s1
where fenshu > = 80 and kecheng = '语文 '
)
and
students.mingzi in
(
select mingzi from students s2
where fenshu > = 80 and kecheng = '数学 '
)


[解决办法]
select mingzhi from (select 姓名,mingzi from students where 分数> 80) a group by 姓名 having count(*)> 1
[解决办法]

select mingzi from students s1
where fenshu > = 80 and (kecheng = '语文 ' or kecheng = '数学 ')

这样不行嘛?
[解决办法]
select a.mingzi from
( select mingzi from students where fenshu > = 80 and kecheng = '语文 ') a
join
( select mingzi from students where fenshu > = 80 and kecheng = '数学 ') b
on a.mingzi=b.mingzi

读书人网 >SQL Server

热点推荐