假设表A中又三个字段a1,a2,a3
我想获取全部a1,a2,但想要每条记录的a2值不重复,
select a1, distinct a2 from A;报错
select distinct a1, a2 from A;会显示a1,a2不相同的项
请问如何获取想要的记录

解决方案 »

  1.   


    select * from 
    (select a1,a2 row_number() over(partition by  a2,order by a2 desc) rn from a)
    where rn = 1
      

  2.   


    select * from
    (select a1,a2 row_number() over(partition by  a2,order by a2 desc) rn from A)
    where rn = 1
     
    ORA-00923: 未找到要求的 FROM 关键字
      

  3.   

    我疯了  
    select * from
    (select a1,a2 , row_number() over(partition by a2,order by a2 desc) rn from A)
    where rn = 1
    a2 后面给个逗号
      

  4.   

    select a2,min(a1) 
      from table_name
    group by a2这样可以不
      

  5.   

    select a2,a1 from
    (select a1,a2 , row_number() over(partition by a2 order by a1 desc) rn from A) A
    where rn = 1
      

  6.   


    create table DUPL_TEST
    (
      NAME VARCHAR2(8), -- 相当于 a1
      AGE  INTEGER      -- 相当于 a2
    )insert into dupl_test (NAME, AGE)
    values ('a', 25);insert into dupl_test (NAME, AGE)
    values ('a', 26);insert into dupl_test (NAME, AGE)
    values ('a', 25);insert into dupl_test (NAME, AGE)
    values ('b', 25);insert into dupl_test (NAME, AGE)
    values ('b', 27);insert into dupl_test (NAME, AGE)
    values ('b', 25);insert into dupl_test (NAME, AGE)
    values ('c', 25);insert into dupl_test (NAME, AGE)
    values ('c', 25);insert into dupl_test (NAME, AGE)
    values ('d', 25);insert into dupl_test (NAME, AGE)
    values ('d', 25);commit;-- 暂时用max这个组函数来做了
    select a.name, (select max(distinct age) from dupl_test b where a.name = b.name) age
    from dupl_test a
    group by name
      

  7.   


    还可以用 max函数来取的。select a2,max(a1) 
      from table_name
    group by a2