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