一个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