ID       编号
———————
1 A101
———————
2 A101
———————
3 B101
———————
4 B102
———————
5 B101我想输出的是
2       A101
3       B101
4       B102也就是要求输出每一个编号,如果有编号重复的,就输出ID最大的一个编号我试过分开表可以做到。但是那样有点麻烦。所以跑到csdn上来问问专家们。看如何解决!

解决方案 »

  1.   


    Select A.* From TableName A 
    Inner Join (Select Max(ID) As ID,编号 From TableName Group By 编号) B
    On A.编号=B.编号 And A.ID=B.ID
      

  2.   


    Select A.* From TableName A 
    Where Not Exists (Select 1 From TableName Where 编号=A.编号 And ID>A.ID)
      

  3.   

    --建立測試環境
    Create Table TEST
    (ID Int,
     编号 Varchar(4))
    Insert TEST Select 1, 'A101'
    Union All Select 2, 'A101'
    Union All Select 3, 'B101'
    Union All Select 4, 'B102'
    Union All Select 5, 'B101'
    GO
    --測試
    --方法一
    Select A.* From TEST A 
    Inner Join (Select Max(ID) As ID,编号 From TEST Group By 编号) B
    On A.编号=B.编号 And A.ID=B.ID 
    Order By A.ID
    --方法二
    Select A.* From TEST A 
    Where Not Exists (Select 1 From TEST Where 编号=A.编号 And ID>A.ID)
    Order By A.ID
    --方法三
    Select A.* From TEST A 
    Where ID=(Select Max(ID) From TEST Where 编号=A.编号)
    Order By A.ID
    --刪除測試環境
    Drop Table TEST
    --結果
    /*
    ID 编号
    2 A101
    4 B102
    5 B101
    */
      

  4.   

    两个字段?select max(ID) as id,编号
    from tablename
    group by 编号
      

  5.   


    create table test 
    (id int ,编号 nvarchar(30))
    insert test  select 1,'A101'
    union select 2,'A101'
    union select 3,'B101'
    union select 4,'B102'
    union select 5,'B101'select * from test where id In(
    select max( id) from test group by 编号 )
    drop table test
      

  6.   

    啊,想複雜了??如果是兩個字段。Select Max(ID) As ID,编号 From TableName Group By 编号
      

  7.   

    鱼哥。
    Select A.* From TableName A 
    Where Not Exists (Select 1 From TableName Where 编号=A.编号 And ID>A.ID)这个A是你建立的表?
    我的意思是直接在我的表addmoney里操作。
    A这里的意思不明白。糊涂了。我把A改成我的表名字全部输出了
      

  8.   

    --結果
    /*
    ID 编号
    2 A101
    4 B102
    5 B101
    */
      

  9.   

    Select Max(ID) As ID,编号 From test Group By 编号
      

  10.   

    一会上来散分。
    laoliu666() 你好过分。哈哈。
    没仔细看就把drop用上了。结果不小心把我的表给丢了。好象还有备份。
      

  11.   

    將TableName 改為你的表名A是你的表的別名,這個不用改。汗,我也有
    Drop Table TEST你只需要中間測試那幾句。
    如果只有兩個字段,直接
    Select Max(ID) As ID,编号 From TableName Group By 编号將TableName 改為你的表名
      

  12.   

    laoliu666() 我恨你。备份里少了好多字段。晕死。不过还是给你分最多了。因为还有别的好多字段都要打印出来。呵呵。他那里是select *今天高兴。哈哈。小弟第1次接触mssql。以后多多关照。散分结帖抽烟ing
      

  13.   

    --如果表中只有兩個字段
    Select Max(ID) As ID,编号 From addmoney Group By 编号--如果表中不止兩個字段
    --方法一
    Select A.* From addmoney A 
    Inner Join (Select Max(ID) As ID,编号 From addmoney Group By 编号) B
    On A.编号=B.编号 And A.ID=B.ID 
    Order By A.ID
    --方法二
    Select A.* From addmoney A 
    Where Not Exists (Select 1 From addmoney Where 编号=A.编号 And ID>A.ID)
    Order By A.ID
    --方法三
    Select A.* From addmoney A 
    Where ID=(Select Max(ID) From addmoney Where 编号=A.编号)
    Order By A.ID