例表:
字段1     字段2   。
  1        1
  1        2
  1        3
  2        1
  2        2
  2        3
  3        1现在想输出字段1=1,且字段2最大的值
即SELECT出的结果应该就是
1    3
这条记录
请问SQL语句应该怎么写,谢谢

解决方案 »

  1.   

    select * from tb a where not exists(select 1 from tb b where a.字段1=b.字段1 and a.字段2<b.字段2)
      

  2.   

    select * from tb a 
    where 字段1=1 and not exists(select 1 from tb b where a.字段1=b.字段1 and a.字段2 <b.字段2)
      

  3.   

    select * from tb a 
    where not exists(select 1 from tb b where a.字段1=b.字段1 and a.字段2 <b.字段2)
    and 字段1=1
      

  4.   

    select 1,max(字段2)
    from @tb
    where 字段1=1 
      

  5.   


    create table tb(字段1 int,字段2 int)
    go
    insert into tb select 1,1
    insert into tb select 1,2
    insert into tb select 1,3
    insert into tb select 2,1
    insert into tb select 2,2
    insert into tb select 2,3
    insert into tb select 3,1 
    go
    select * from tb a 
    where 字段1=1 and not exists(select 1 from tb b where a.字段1=b.字段1 and a.字段2 <b.字段2)
    go
    drop table tb
    go
    字段1         字段2         
    ----------- ----------- 
    1           3(所影响的行数为 1 行)
      

  6.   

    这样也可以:
    select 字段1,max(字段2) as 字段2
    from tb
    where 字段1=1
    group by 字段1
      

  7.   

    create table tb(字段1 int,字段2 int)
    go
    insert into tb select 1,1
    insert into tb select 1,2
    insert into tb select 1,3
    insert into tb select 2,1
    insert into tb select 2,2
    insert into tb select 2,3
    insert into tb select 3,1 
    go
    select 字段1,MAX(字段2) as 字段2
    from tb
    where 字段1=1
    group by 字段1字段1         字段2
    ----------- -----------
    1           3
      

  8.   

    SQL code--按某一字段分组取最大(小)值所在行的数据
    (爱新觉罗.毓华 2007-10-23于浙江杭州)
    /*
    数据如下:
    name val memo
    a    2   a2(a的第二个值)
    a    1   a1--a的第一个值
    a    3   a3:a的第三个值
    b    1   b1--b的第一个值
    b    3   b3:b的第三个值
    b    2   b2b2b2b2
    b    4   b4b4
    b    5   b5b5b5b5b5
    */
    --创建表并插入数据:
    create table tb(name varchar(10),val int,memo varchar(20))
    insert into tb values('a',    2,   'a2(a的第二个值)')
    insert into tb values('a',    1,   'a1--a的第一个值')
    insert into tb values('a',    3,   'a3:a的第三个值')
    insert into tb values('b',    1,   'b1--b的第一个值')
    insert into tb values('b',    3,   'b3:b的第三个值')
    insert into tb values('b',    2,   'b2b2b2b2')
    insert into tb values('b',    4,   'b4b4')
    insert into tb values('b',    5,   'b5b5b5b5b5')
    go--一、按name分组取val最大的值所在行的数据。
    --方法1:
    select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
    --方法2:
    select a.* from tb a where not exists(select 1 from tb where name = a.name and val > a.val)
    --方法3:
    select a.* from tb a,(select name,max(val) val from tb group by name) b where a.name = b.name and a.val = b.val order by a.name
    --方法4:
    select a.* from tb a inner join (select name , max(val) val from tb group by name) b on a.name = b.name and a.val = b.val order by a.name
    --方法5
    select a.* from tb a where 1 > (select count(*) from tb where name = a.name and val > a.val ) order by a.name
    /*
    name       val         memo                 
    ---------- ----------- -------------------- 
    a          3           a3:a的第三个值
    b          5           b5b5b5b5b5
    */
      

  9.   

    select 字段1,max(字段2) as 字段2
    from tb
    where 字段1=1
      

  10.   


    -- 为什么他们写了那么多代码,是不是我的不对呀select 字段1,max(字段2) as 字段2
    from tb
    where 字段1=1
      

  11.   

    select 字段1,max(字段2) as 字段2 from tb a  where 字段1=1 group by 字段1
      

  12.   


    select 字段1,max(字段2) as 字段2 
    from tb a
    where 字段1=1 
    group by 字段1