Flag是什么类型取出两条什么样的记录?同一userid如果有两条以上的记录,怎么取舍?

解决方案 »

  1.   

    随便怎么取都可以,或者是加一个时间字段,取时间最大的两条也可以,FLAG什么类型没有关系吧?
      

  2.   

    增加一个自增列id
    select * from t where id in (select max(id) from t group by userid union select min(id) from t group by userid)
      

  3.   

    如果某userid只有一行,上边的语句对该userid也只能返回一样,不知道这样能不能满足楼主的要求
      

  4.   

    如果某userid只有一行,上边的语句对该userid也只能返回一行,不知道这样能不能满足楼主的要求
      

  5.   


    如果相同的UserID没有Flag相同的话
    Select * from 表 A 
    Where Exists(Select * from 表 Where UserID=A.UserID And Flag>A.Flag Having Count(*)<2 )
    Order By UserID,Flag
      

  6.   

    关于 Lwg0901(伤心人) 的语句是有问题的
    增加一个自增列id
    select * from t where id in (select max(id) from t group by userid union select min(id) from t group by userid)如果max(userid) 的记录同时有三条的话,那这三条都会被选出来
      

  7.   

    to  ancyzhou() :
    id为自增列,除非你强行使id列有相同值,否则不会有“max(id)的记录同时有三条的话”谢谢
      

  8.   

    返回时间最大的俩个也可以吧,你可以试试取不包含最大时间的相同UserId的最大(其实是第二大)时间union最大时间
      

  9.   


    select max(UserId) as UserId from tablename group by UserID
    union all
    select min(UserID) as UserId from tablename group by UserID