Oracle数据库
有一张表user
字段:key,userid,amendtime,status,pid,.....(还有其它字段)
表里有很多记录
    查询
       用户id相同,但修改时间最早,status=1,pid=12
                                的一组记录表里有很多用户id,同时有很多修改时间。记录里都是一个用户id对应一个最早修改时间,没有id重复的情况我sql很弱~达人帮下忙。100分奉上

解决方案 »

  1.   

    不好意思,在查询的记录里,userid不能有相同的情况
      

  2.   

    select userid,min(amendtime) from user group by userid
      

  3.   

    如果只需要两列话,可以参考如下语句:
    select userid,min(amendtime) ealiest from user 
    where status=1 and pid=12 
    group by userid
      

  4.   

    SELECT *
      FROM (SELECT key,
                   userid,
                   row_number() over(PARTITION BY userid ORDER BY amendtime) rn,
                   amendtime,
                   status,
                   pid
              FROM USER)
     WHERE rn = 1;
      

  5.   

    上一个少了条件
    SELECT *
      FROM (SELECT key,
                   userid,
                   row_number() over(PARTITION BY userid ORDER BY amendtime) rn,
                   amendtime,
                   status,
                   pid
              FROM USER
             WHERE status = 1 AND
                   pid = 12)
     WHERE rn = 1;
      

  6.   

    user为关键字,是不能用做表名的
      

  7.   

    over
    还是第一次看见,路漫漫兮。。