13:56:00 jlanzpa817>create table test (id varchar2(10), name varchar2(10) ,val number);表已创建。已用时间:  00: 00: 00.30
13:56:00 jlanzpa817>
13:56:00 jlanzpa817>insert into test values('a','zhang',45);已创建 1 行。已用时间:  00: 00: 00.10
13:56:00 jlanzpa817>insert into test values('a','li',56);已创建 1 行。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>insert into test values('a','wei',33);已创建 1 行。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>insert into test values('b','zai',23);已创建 1 行。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>insert into test values('b','ti',67);已创建 1 行。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>insert into test values('c','rr',34);已创建 1 行。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>commit;提交完成。已用时间:  00: 00: 00.10
13:56:01 jlanzpa817>select * from test where rowid in 
13:56:01   2  (select min(rowid) from test group by id);ID         NAME              VAL
---------- ---------- ----------
a          zhang              45
b          zai                23
c          rr                 34已用时间:  00: 00: 00.20
13:56:01 jlanzpa817>

解决方案 »

  1.   

    试试这样行不:
    SELECT * FROM your_table WHERE ROWID IN (SELECT MIN(ROWID) FROM your_table GROUP BY fz_field)
      

  2.   

    select a.id from test3 a,(select min(rowid) asd,id from test3 group by id) b where a.rowid=b.asd
      

  3.   

    哦, CHENGXB(大山) 和jlandzpa(ORA-00600) 相同,正确!
    zhaoyongzhu(zhaoyongzhu)则不对。
      

  4.   

    select ro, x,y,z from
    (select rownum ro,x,y,z from fzy)
    where ro in(select min(rn) rn from(select rownum rn, x,y,z from fzy)  group by x)
      

  5.   

    给一个不用ROWID的:
    SELECT * FROM
    (SELECT * FROM  (SELECT ROWNUM RN,A.* FROM your_table A))
    WHERE RN IN
    (SELECT MIN(RN) FROM
    (SELECT * FROM  (SELECT ROWNUM RN,A.* FROM your_table A)) GROUP BY FenZu_field)
      

  6.   

    不说我没有提醒你们啊,
    假如相同的a字段中,第一个插入的记录不一定rowid最小,rownum更不一定是最小,rownum是可变的。
    所以,从你的角度上,首先得弄清楚,你要的第一行是什么第一行,是相同a地段下按另一个字段排序的第一行???
      

  7.   

    瓢兄说得对
    rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是
    1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。