Neuere Versionen von Oracle haben kein Limit, aber die meisten älteren Versionen von Oracle haben ein Verschachtelungslimit von 1
Ebene tief.
Dies funktioniert auf allen Versionen:
SELECT (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
FROM dual do
Diese Abfrage funktioniert in 12c und 18c, aber nicht in 10g und 11g. (Es gibt jedoch mindestens eine Version von 10g, die diese Abfrage erlaubt. Und es gibt einen Patch, um dieses Verhalten in 11g zu aktivieren.)
SELECT (
SELECT *
FROM (
SELECT *
FROM dual dn
WHERE dn.dummy = do.dummy
)
WHERE rownum = 1
)
FROM dual do
Bei Bedarf können Sie diese Einschränkung mit Fensterfunktionen umgehen (die Sie in SQL Server
verwenden können auch :)
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