id    scale   stockid    
  -------------------------------------------
1 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
2 18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1
3 18509 7704 33211BE29C5E4C075573E06D7FF5776C
4 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
5 12506 0 C71D4E4205F24CFCB8EDC7D4460B61F1
6 12506 7704 33211BE29C5E4C075573E06D7FF5776C按id分组取最大scale的stockid...

解决方案 »

  1.   

    select * from tb t where stockid=(select max(stockid) from tb where id=t.id)
      

  2.   

    select * from table1 T where not exists (select 1 from table1 where T.id=id And T.scale<scale)
      

  3.   

    select * from tb a where not exists(select 1 from tb b where a.scale = b.scale and a.id < b.id)
      

  4.   

    格式有点问题!!!!!
       id            scale        stockid   
    ---------------------------------------------
    1  18509  7704       F9320BE29C5E4C07A6573E0D6D7FF56C
    2  18509  0       C71D4E4205F24CFCB8EDC7D4460B61F1
    3  18509  7704       33211BE29C5E4C075573E06D7FF5776C
    4  12506  7704       F9320BE29C5E4C07A6573E0D6D7FF56C
    5  12506  0       C71D4E4205F24CFCB8EDC7D4460B61F1
    6  12506  7704       33211BE29C5E4C075573E06D7FF5776C
      

  5.   

    select * from tb t
    where scale=(select max(scale) form tb where id=t.id)
      

  6.   

    select * from tb t
    where not exists(select 1 form tb where id=t.id and scale>t.scale)
      

  7.   

    要求是18509和12506不能有重复记录
    按id分组取最大scale的stockid...
      

  8.   

    1 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C AAAPzfAAFAAABL+AAA
    2 18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1 AAAPzfAAFAAABL+AAB
    3 18509 7704 33211BE29C5E4C075573E06D7FF5776C AAAPzfAAFAAABL+AAC
    4 12506 7704 33211BE29C5E4C075573E06D7FF5776C AAAPzfAAFAAABL+AAD
    5 12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1 AAAPzfAAFAAABL+AAE
    6 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C AAAPzfAAFAAABL+AAF
    如果数据是这样的话你看结果对不对....
      

  9.   

    select * from tablename a
    left join (select id,max(scale) as scale from tablename group by id) b on a.id=b.id and a.scale=b.scale
      

  10.   


    你是不是把需求写错了?是按scale分组取最id的stockid吧?
      

  11.   

    你试试这个看是不是你要的结果
    select * from tablename a
    left join (select scale,max(id) as id from tablename group by scale) b on a.id=b.id and a.scale=b.scale
      

  12.   

    没写错.
    是按id分组取最大scale的stockid
      

  13.   


    id scale stockid   
    -------------------------------------------
    18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    18509 0    C71D4E4205F24CFCB8EDC7D4460B61F1
    18509 7704 33211BE29C5E4C075573E06D7FF5776C
    12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    12506 0    C71D4E4205F24CFCB8EDC7D4460B61F1
    12506 7704 33211BE29C5E4C075573E06D7FF5776C
      

  14.   

    如果18509和12506不能有重复,那就是按scale分组囧~~~
      

  15.   

    18509和12506就是有重复的
    要求就是取scale最大的那条
      

  16.   

    id分了组就不重复了, 但是我还要取stockid , 哎比较麻烦
      

  17.   

    路飞 我的是oracle执行了你的sql不对
    结果:
    1 18509 7704 33211BE29C5E4C075573E06D7FF5776C 7704 18509
    2 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C 7704 18509
    3 12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1 19999 12506
    4 18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1 0 18509
    5 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    6 12506 7704 33211BE29C5E4C075573E06D7FF5776C
      

  18.   

    数据:
    id scale stockid   
    -------------------------------------------
    18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    18509 0    C71D4E4205F24CFCB8EDC7D4460B61F1
    18509 7704 33211BE29C5E4C075573E06D7FF5776C
    12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    12506 0    C71D4E4205F24CFCB8EDC7D4460B61F1
    12506 7704 33211BE29C5E4C075573E06D7FF5776C结果:
    id scale stockid   
    -------------------------------------------
    18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    这样的?
      

  19.   

    SQL语句是这样,Oracle我就不知道了,很久没碰就忘了...(>_<)!!!
    select a.id,a.scale,max(stockid) as stockid 
    from tablename a
    left join (select id,max(scale) as scale from tablename group by id) b on a.id=b.id and a.scale=b.scale
    group by a.id,a.scale
      

  20.   

    你那运行结果正确吗
    能帖出来么!
    我在oracle下运行结果:1 18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1
    2 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    3 12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1
    4 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
      

  21.   

    不好意思#29写错了create table table1
    (
    seq int identity(1,1),
    id int,
    scale int,
    stockid varchar(100)
    )insert into table1
    select 18509,7704,'33211BE29C5E4C075573E06D7FF5776C'
    union select 18509,7704,'F9320BE29C5E4C07A6573E0D6D7FF56C'
    union select 12506,19999,'C71D4E4205F24CFCB8EDC7D4460B61F1'
    union select 18509,0,'C71D4E4205F24CFCB8EDC7D4460B61F1'
    union select 12506,7704,'F9320BE29C5E4C07A6573E0D6D7FF56C'
    union select 12506, 7704,'33211BE29C5E4C075573E06D7FF5776C' select * from table1
    ---------------------------------
    seq id scale stockid
    1 12506 7704 33211BE29C5E4C075573E06D7FF5776C
    2 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    3 12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1
    4 18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1
    5 18509 7704 33211BE29C5E4C075573E06D7FF5776C
    6 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    select a.scale,max(stockid) as stockid 
    from table1 a
    right join (select id,max(scale) as scale from table1 group by id) b on a.id=b.id and a.scale=b.scale
    group by a.scale
    ---------------------------------
    scale stockid
    7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    19999 C71D4E4205F24CFCB8EDC7D4460B61F1
      

  22.   

    应该是这样的,之前的我都没测试过囧~~~
    select a.id,a.scale,max(stockid) as stockid 
    from table1 a
    right join (select id,max(scale) as scale from table1 group by id) b on a.id=b.id and a.scale=b.scale
    group by a.id,a.scale
    ---------------------------------
    id scale stockid
    18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C
    12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1
      

  23.   

    这个我只要把max改成min结果就错了
      

  24.   

    Min是这样
    select a.id,a.scale,min(stockid) as stockid 
    from table1 a
    right join (select id,min(scale) as scale from table1 group by id) b on a.id=b.id and a.scale=b.scale
    group by a.id,a.scale
    ---------------------------------
    id scale stockid
    18509 0 C71D4E4205F24CFCB8EDC7D4460B61F1
    12506 7704 33211BE29C5E4C075573E06D7FF5776C
    哪里错了?
      

  25.   

    select * from TABLE where stockid IN (select max(stockid) from TABLE GROUP BY id)
      

  26.   

    结果不对哦1 18509 7704 F9320BE29C5E4C07A6573E0D6D7FF56C AAAOVmAAIAAAW8FAAA
    2 18509 0 Z71D4E4205F24CFCB8EDC7D4460B61F1 AAAOVmAAIAAAW8FAAB
    3 18509 7704 33211BE29C5E4C075573E06D7FF5776C AAAOVmAAIAAAW8FAAC
    4 12506 7704 z3211BE29C5E4C075573E06D7FF5776C AAAOVmAAIAAAW8FAAD
    5 12506 19999 C71D4E4205F24CFCB8EDC7D4460B61F1 AAAOVmAAIAAAW8FAAE
    6 12506 7704 F9320BE29C5E4C07A6573E0D6D7FF56C AAAOVmAAIAAAW8FAAF执行:select * from testaa where stockid IN (select max(stockid) from testaa GROUP BY id)结果:
    1 18509 0 Z71D4E4205F24CFCB8EDC7D4460B61F1
    2 12506 7704 z3211BE29C5E4C075573E06D7FF5776C
      

  27.   


    select t.* from tb t where stock=(select max(scale) from tb) group by t.id
      

  28.   

    你用了group by t.id 可以select t.* 吗?