这是我的问题:
select count(1) into isMyCarExists
from CAR
where ID_MODEL = (select ID
from MODEL
where TYPE = 'SUV'
and rownum <= 1
order by DATE_UPDATE desc);
我想count
CAR
中有多少行拥有DATE_UPDATE desc
MODEL
的最新版本('SUV'
)。
通过此查询,我得到ORA-00907: missing right parenthesis
...
我正在使用Oracle数据库10。
答案 0 :(得分:3)
即使你修复了查询,它也不会做你想要的。 where
在order by
之前执行。
如果按递增顺序分配id
,那么这应该有效:
select count(*) as isMyCarExists
from car c
where id_model = (select max(id)
from model
where type = 'SUV'
);
或者,使用分析函数:
select count(*) as isMyCarExists
from car c
where id_model = (select m.id
from (select m.*, row_number() over (order by date_update desc) as seqnum
from model m
where m.type = 'SUV'
) m
where seqnum = 1
);
答案 1 :(得分:1)
首先忘掉那个错误。您的查询功能错误。订单和rownum不会一起使用。
由于您不在12c,您需要先使用order by
,然后在外部查询中使用where rownum = 1
。另外,在12c中,使用TOP-N查询非常容易fetch first 1 rows only