PHP code: SQL> create table tdev (id number, ec number , n number); 表已创建。 SQL> insert into tdev select 1, floor(dbms_random.value(0,2)),rownum from dual connect by rownum<20; 已创建19行。 SQL> select * from tdev; ID EC N ---------- ---------- ---------- 1 0 1 1 1 2 1 1 3 1 0 4 1 1 5 1 1 6 1 0 7 1 1 8 1 1 9 1 0 10 1 1 11 1 0 12 1 0 13 1 0 14 1 0 15 1 0 16 1 0 17 1 1 18 1 1 19 已选择19行。 执行 select id, n errortime, (select min(n) from tdev x where x.n > y.n and ec = 0 and id=y.id ) recoverytime from tdev y where ec = 1 SQL> select id, n errortime, 2 (select min(n) 3 from tdev x 4 where x.n > y.n 5 and ec = 0 6 and id=y.id 7 ) recoverytime 8 from tdev y 9 where ec = 1 10 / ID ERRORTIME RECOVERYTIME ---------- ---------- ------------ 1 2 4 1 3 4 1 5 7 1 6 7 1 8 10 1 9 10 1 11 12 1 18 1 19 已选择9行。 ..............................
SQL> create table tdev (id number, ec number , n number); 表已创建。 SQL> insert into tdev select 1, floor(dbms_random.value(0,2)),rownum from dual connect by rownum<20; 已创建19行。 SQL> select * from tdev; ID EC N ---------- ---------- ---------- 1 0 1 1 1 2 1 1 3 1 0 4 1 1 5 1 1 6 1 0 7 1 1 8 1 1 9 1 0 10 1 1 11 1 0 12 1 0 13 1 0 14 1 0 15 1 0 16 1 0 17 1 1 18 1 1 19 已选择19行。 执行 select id, n errortime, (select min(n) from tdev x where x.n > y.n and ec = 0 and id=y.id ) recoverytime from tdev y where ec = 1 SQL> select id, n errortime, 2 (select min(n) 3 from tdev x 4 where x.n > y.n 5 and ec = 0 6 and id=y.id 7 ) recoverytime 8 from tdev y 9 where ec = 1 10 / ID ERRORTIME RECOVERYTIME ---------- ---------- ------------ 1 2 4 1 3 4 1 5 7 1 6 7 1 8 10 1 9 10 1 11 12 1 18 1 19 已选择9行。 ..............................
PHP code: select id, min(n) errortime, recoverytime from( select id, n , (select min(n) from tdev x where x.n > y.n and ec = 0 and id=y.id) recoverytime from tdev y where ec = 1 ) group by id, recoverytime order by id, recoverytime nulls last SQL> select id, min(n) errortime, recoverytime from( 2 select id, n , (select min(n) 3 from tdev x where x.n > y.n 4 and ec = 0 and id=y.id) recoverytime 5 from tdev y 6 where ec = 1 7 ) group by id, recoverytime 8 order by id, recoverytime nulls last 9 / ID ERRORTIME RECOVERYTIME ---------- ---------- ------------ 1 2 4 1 5 7 1 8 10 1 11 12 1 18 .........................................................
select id, min(n) errortime, recoverytime from( select id, n , (select min(n) from tdev x where x.n > y.n and ec = 0 and id=y.id) recoverytime from tdev y where ec = 1 ) group by id, recoverytime order by id, recoverytime nulls last SQL> select id, min(n) errortime, recoverytime from( 2 select id, n , (select min(n) 3 from tdev x where x.n > y.n 4 and ec = 0 and id=y.id) recoverytime 5 from tdev y 6 where ec = 1 7 ) group by id, recoverytime 8 order by id, recoverytime nulls last 9 / ID ERRORTIME RECOVERYTIME ---------- ---------- ------------ 1 2 4 1 5 7 1 8 10 1 11 12 1 18 .........................................................