Lateral Joins (LATERAL JOIN)
LATERAL के साथ किसी subquery के भीतर पिछले FROM item को reference कीजिए — यह प्रति-row function call के समकक्ष SQL तरीका है।
Lateral Joins (LATERAL JOIN), CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
LATERAL क्या है
LATERAL FROM क्लॉज़ में मौजूद किसी उप-क्वेरी को FROM सूची में पहले आए आइटमों के कॉलमों का संदर्भ लेने देता है। LATERAL के बिना, FROM आइटम एक-दूसरे को नहीं देख सकते।
मानसिक मॉडल
LATERAL का अर्थ है “बाईं ओर की हर पंक्ति के लिए इस क्वेरी का मूल्यांकन करें”। यह संबंधित उप-क्वेरी जैसा है — लेकिन FROM क्लॉज़ में और हर बाहरी पंक्ति के लिए कई पंक्तियाँ/कॉलम लौटाता है।
हर उपयोगकर्ता के लिए शीर्ष 3 ऑर्डर
LATERAL का पारंपरिक उपयोग:
SELECT u.id, u.email, o.id AS order_id, o.total
FROM users u
JOIN LATERAL (
SELECT id, total FROM orders
WHERE user_id = u.id
ORDER BY total DESC
LIMIT 3
) AS o ON true;SELECT में उप-क्वेरी क्यों नहीं
SELECT में स्केलर उप-क्वेरी एक मान लौटाती है। LATERAL हर बाहरी पंक्ति के लिए कई पंक्तियाँ और कई कॉलम लौटाता है।
फ़ंक्शन के साथ LATERAL
सेट लौटाने वाले फ़ंक्शन डिफ़ॉल्ट रूप से LATERAL-जैसे होते हैं:
SELECT t.id, unnest_tag
FROM posts t
CROSS JOIN LATERAL unnest(t.tags) AS unnest_tag;
-- Equivalent (set-returning functions are implicit LATERAL):
SELECT t.id, unnest_tag
FROM posts t, unnest(t.tags) AS unnest_tag;LATERAL बनाम विंडो फ़ंक्शन
“हर समूह के शीर्ष-N” के लिए LATERAL और ROW_NUMBER दोनों काम करते हैं। ROW_NUMBER अक्सर अधिक कुशल होता है क्योंकि वह तालिका को एक बार पढ़ता है; LATERAL हर बाहरी पंक्ति के लिए फिर से क्वेरी चलाता है।
-- ROW_NUMBER alternative:
WITH ranked AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total DESC) AS rn
FROM orders
)
SELECT u.email, r.id, r.total
FROM users u
JOIN ranked r ON r.user_id = u.id
WHERE r.rn <= 3;एग्रीगेट के साथ LATERAL
हर पंक्ति के लिए पहले से गणना किए गए मान:
SELECT u.email, stats.last_order_at, stats.total_orders
FROM users u
LEFT JOIN LATERAL (
SELECT MAX(created_at) AS last_order_at,
COUNT(*) AS total_orders
FROM orders WHERE user_id = u.id
) AS stats ON true;ON true
JOIN के लिए LATERAL में ON क्लॉज़ आवश्यक है — लेकिन JOIN की शर्त उप-क्वेरी के अंदर होती है, इसलिए बाहरी ON true होता है।
CROSS JOIN LATERAL बनाम LEFT JOIN LATERAL
- CROSS JOIN LATERAL — अंदर की क्वेरी कोई पंक्ति न लौटाए तो बाहरी पंक्ति हटा दी जाती है
- LEFT JOIN LATERAL ... ON true — बाहरी पंक्ति NULL कॉलमों के साथ रखी जाती है
दूरी वाली क्वेरी के लिए LATERAL
हर उपयोगकर्ता के लिए सबसे निकटतम स्टोर:
SELECT u.id, s.name, s.distance
FROM users u
CROSS JOIN LATERAL (
SELECT name, location <-> u.location AS distance
FROM stores
ORDER BY location <-> u.location
LIMIT 1
) AS s;LATERAL एसक्यूएल मानक का हिस्सा है
इसे SQL:1999 में मानकीकृत किया गया। PostgreSQL इसे LATERAL के रूप में लागू करता है; एसक्यूएल सर्वर CROSS APPLY / OUTER APPLY का उपयोग करता है।
प्रदर्शन
LATERAL हर बाहरी पंक्ति के लिए निष्पादित होता है। अंदर की तालिका पर उपयुक्त इंडेक्स होने पर हर पुनरावृत्ति तेज़ होती है। इंडेक्स न होने पर बड़े पैमाने पर यह धीमा हो सकता है।
पुनरावलोकन
LATERAL = “ऐसी FROM-उप-क्वेरी जो बाहरी पंक्ति को देख सकती है”।
- हर समूह के शीर्ष-N
- हर पंक्ति के लिए पहले से गणना
- सेट लौटाने वाले फ़ंक्शन
- बाहरी JOIN के लिए LEFT JOIN ... ON true के साथ उपयोग करें
त्वरित जाँच
LATERAL ऐसी कौन-सी सुविधा देता है जो सामान्य FROM-उप-क्वेरी नहीं देती?
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 46
- पाठ
- 183
अक्सर पूछे जाने वाले प्रश्न
क्या “Lateral Joins (LATERAL JOIN)” पाठ निःशुल्क है?
हाँ—“Lateral Joins (LATERAL JOIN)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Lateral Joins (LATERAL JOIN)” में मैं क्या सीखूँगा?
LATERAL के साथ किसी subquery के भीतर पिछले FROM item को reference कीजिए — यह प्रति-row function call के समकक्ष SQL तरीका है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Lateral Joins (LATERAL JOIN)” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Cross Joins और Cartesian Products
- Lateral Joins (LATERAL JOIN)
- Anti-Joins और Semi-Joins (NOT EXISTS)
- Multi-Table Join Performance Tuning