Nylige versioner af Oracle har ikke en grænse, men de fleste ældre versioner af Oracle har en indlejringsgrænse på 1
niveau dybt.
Dette virker på alle versioner:
SELECT (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
FROM dual do
Denne forespørgsel virker i 12c og 18c, men virker ikke i 10g og 11g. (Der er dog mindst én version af 10g, der tillod denne forespørgsel. Og der er en patch til at aktivere denne adfærd i 11g.)
SELECT (
SELECT *
FROM (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
WHERE rownum = 1
)
FROM dual do
Om nødvendigt kan du omgå denne begrænsning med vinduesfunktioner (som du kan bruge i SQL Server
også :)
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