Последните версии на Oracle нямат ограничение, но повечето по-стари версии на Oracle имат ограничение за влагане от 1
ниво дълбоко.
Това работи на всички версии:
SELECT (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
FROM dual do
Тази заявка работи в 12c и 18c, но не работи в 10g и 11g. (Има обаче поне една версия на 10g, която позволява тази заявка. И има корекция, която позволява това поведение в 11g.)
SELECT (
SELECT *
FROM (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
WHERE rownum = 1
)
FROM dual do
Ако е необходимо, можете да заобиколите това ограничение с функции на прозореца (които можете да използвате в SQL Server
също :)
SELECT *
FROM (
SELECT m.material_id, ROW_NUMBER() OVER (PARTITION BY content_id ORDER BY resolution DESC) AS rn
FROM mat m
WHERE m.material_id IN
(
SELECT con.content_id
FROM con_groups
JOIN con
ON con.content_id = con_groups.content_id
WHERE con_groups.content_group_id = 10
)
)
WHERE rn = 1