我正在编写将返回最长描述的课程的查询。在这里,我在想什么,但它不会工作?
SELECT Max(DESCRIPTION)
FROM course
内部查询选择最大描述长度,外部查询列出具有最大长度的课程。
select * from course
where length(description) = (select max(length(description)) from course);
如果您只想要描述,请使用select description from ...
而不是*
在子查询中使用分析max()
函数。这样基本表只读一次。
select description
from (
select description, length(description) as len,
max(length(description)) over () as max_len
from course
)
where len = max_len
;
这将为您提供课程表的最大描述。
select description
from (select description, length(description) as len
from course
order by len desc) t
where rownum = 1
你可以使用length comparison
使用outer join
并包括ties
forcourse descriptions
:
create table course
(
course_id int,
description varchar2(100)
);
insert all
into course(course_id,description) values (1,'Mathematics')
into course(course_id,description) values (2,'Physics')
into course(course_id,description) values (3,'Mathematics')
into course(course_id,description) values (4,'Biology')
into course(course_id,description) values (5,'Chemistry')
select * from dual;
select c1.course_id, c1.description
from course c1 left outer join
course c2 on length(c2.description) > length(c1.description)
where length(c2.description) is null;
COURSE_ID DESCRIPTION
----------- --------------
1 Mathematics
3 Mathematics