数据库中有1张表如下
create table Test
{
id varchar2(50) not null,
Cont varchar2(50) not null,
P_Add_Time date not null,
P_Update_Time date not null
}表中有重复Id,但每个Id的P_Add_Time都不相同,写一个查询的sql语句,查出所有数据(所有列均显示),若遇到id有重复的取时间最近(也就是最大)的那一条数据,其他的不显示,要求有实践证明的,没有实践证明的请勿空谈。Oracle数据库SQL语句

解决方案 »

  1.   

    提示:表可以设置成双主键,但是sql语句怎么写呢?
      

  2.   

    with tt as(
    select id,cont,P_Add_Time,P_Update_Time,row_number() over(partition by id order by P_Add_Time desc) rn from test
    )
    select id,cont,P_Add_Time,P_Update_Time from tt where rn=1;
      

  3.   

    SELECT id,cont,p_add_time,p_update_time FROM test a
    WHERE p_add_time =(SELECT MAX(p_add_time) FROM test b WHERE b.id=a.id); 
      

  4.   

     果断分区函数,row_number 取值为1 的...答案如 2 3 楼
      

  5.   

    在Mysql下通过:SELECT 
      * 
    FROM
      test t3 
    WHERE EXISTS 
      (SELECT 
        1 
        FROM (SELECT 
          t1.`id`,
          MAX(t1.`P_Add_Time`) P_Add_Time 
        FROM
          test t1 
        GROUP BY t1.`id`) t2 
      WHERE t3.`id` = t2.id 
        AND t3.`P_Add_Time` = t2.P_Add_Time)