我有一个看起来像这样的表:
CREATE OR REPLACE TYPE tip_orase AS VARRAY(10) of VARCHAR2(50)
/
CREATE table excursie_try (
cod_excursie NUMBER(4),
denumire VARCHAR2(20),
orase tip_orase,
status varchar2(20)
);
我需要找出已删除最少条目数的条目的'cod_excursie'。
我可以通过计算每个条目的城市数量并选择最小值来完成大量工作。然后进行查询以给出orase中具有最少条目数的条目的'cod_excursie'。
有更简单的方法吗?我试过像:
select cod_excursie
from excursie_try, (select max(orase.count()) m
from excursie_try) T
where orase.count = T.m
and ROWNUM <= 1;
但它不起作用。任何想法或我必须采取长期的方式?
答案 0 :(得分:1)
试试这个:
select cod_excursie from (
select et.cod_excursie,
(select count(*) from table(et.orase)) n
from excursie_try et order by 2 desc
) where rownum = 1;
(select count(*) from table(et.orase))
是一个单行子查询,我使用TABLE来模拟varray上的sql表。
order by 2 desc
中的 where rownum = 1
用于前N个报告。