select a.name from (select name from ttest where (km='数学' and cj>60)) a
where (select cj from ttest where name=a.name and km='语文')>60

解决方案 »

  1.   

    select distinct name from test 
    where name in 
    (select distinct name from test where km='数学' and cj > 60) 
    and km='语文' and cj > 60;
      

  2.   

    select name from testa
    where km in ('语文','数学') and cj > 60
    group by name
    having count(*) =2
      

  3.   

    对于嵌套select语句的做法,我有一点想法,
    如果有70个科目或者71个科目,
    难道要嵌套70次吗?谢谢大家的指导,希望大家可以在讨论一下
      

  4.   

    duanzilin(寻)的办法很好,没有嵌套select
    如果用嵌套的方法那就真要嵌套70次了,所以嵌套的不好,慢
      

  5.   

    to feng2(蜀山风云):
    可能是我没有表述清楚,我的意思是,如果我要选择
    语文>60 and 数学>61 and 体育>99 and 政治>0 and 计算机>99 and 音乐>5 and ...
    这样的70个科目的条件的限制,
    那么可能就要嵌套很多层了,难道只能用这种办法解决吗?
      

  6.   

    select name from testa
    group by name
    having sum(case when km = '语文' and cj > 60 then 1 
               when km = '数学' and cj > 70 then 1 
               else 0 end) = 2NAME
    ----------
    李四
    张三