Oracle не поддерживает синтаксис limi [n]t
. Эквивалентом является fetch first [n] rows only
(доступно начиная с Oracle 12 c).
Но суть: каждый из подзапросов гарантированно возвращает только одну запись, поэтому * 1005 просто не требуется *.
Кроме того, я бы предложил переписать запросы для использования rank()
, что избавляет от необходимости использовать несколько подзапросов и, на мой взгляд, делает логику c более понятной:
select city, length_city
from (
select
city,
lenght(city) length_city,
rank() over(order by length(city)) rn_asc,
rank() over(order by length(city) desc) rn_desc
from station
) t
where rn_asc = 1 or rn_desc = 1
Если вы хотите иметь верхние / нижние связи и вам нужен только один из них, вы можете добавить дополнительные критерии упорядочения к функции ранжирования: например, order by length(city), city
дает вам первый город в алфавитном порядке, если дубликатов.