Recente versies van Oracle hebben geen limiet, maar de meeste oudere versies van Oracle hebben een nestlimiet van 1
niveau diep.
Dit werkt op alle versies:
SELECT (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
FROM dual do
Deze query werkt in 12c en 18c, maar niet in 10g en 11g. (Er is echter ten minste één versie van 10g die deze zoekopdracht mogelijk maakte. En er is een patch om dit gedrag in 11g mogelijk te maken.)
SELECT (
SELECT *
FROM (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
WHERE rownum = 1
)
FROM dual do
Indien nodig kunt u deze beperking omzeilen met vensterfuncties (die u kunt gebruiken in SQL Server
ook :)
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