有这样一个表 s
a      b      c  
11     2      1
11     1      0
22     1      1
22     1      0
33     1      1
33     2      2  
查询出a字段  其中如果b字段中的值是最大的(如果相等满足c字段等于0) 并且c字段等于0
象这个表s的结果是 11 22
我写的只能查出11
SELECT a FROM s where b=(SELECT  max(b) FROM s) 

解决方案 »

  1.   

    SELECT * FROM s where b=(SELECT  max(b) FROM s) AND C=0
      

  2.   

    SELECT a FROM s where b=(SELECT  max(b) FROM s) and a=s.a
      

  3.   

    表 s 敲错了
    a      b      c  
    11     2      0
    11     1      1
    22     1      1
    22     1      0
    33     1      1
    33     2      2  
      

  4.   

    Declare @maxb int
    SELECT @maxb=max(b) from s
    SELECT a from (select a from s group by b) WHERE b=@maxb or c=0试试吧,没测试不知道正不正确
      

  5.   

    你确信你的只查处11吗?按你的查出来的应该是11和33,因为你没加c=0的条件
    另外,这个sql语句会不会导致每查一条数据都会去做max?
      

  6.   

    Declare @maxb int 
    SELECT @maxb=max(b) from s SELECT * FROM s where b=@maxb AND C=0 
    按照你最新的表的数据,应该只有11啊,
    b为2 的有11和33,但c为0 的只有第一条啊
      

  7.   


    查询出a字段  其中如果b字段中的值是最大的(如果相等满足c字段等于0) 并且c字段等于0
      

  8.   

    select a from s where c=0 and b = ( select max(b) from s)