बहिष्करण में शामिल होने . के साथ मैं इस प्रकार की क्वेरी को अलग तरीके से करता हूं एक सबक्वेरी के बजाय। आप बी की पंक्तियों को ढूंढना चाहते हैं जिनमें किसी दिए गए आईडी के लिए अधिकतम समय है; दूसरे शब्दों में, जहां किसी अन्य पंक्ति में अधिक समय और समान आईडी नहीं है।
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
LEFT OUTER JOIN B AS B2 ON B.ID = B2.ID AND B.Time < B2.Time
WHERE B2.ID IS NULL
आप व्युत्पन्न तालिका . का भी उपयोग कर सकते हैं , जो एक सहसंबद्ध सबक्वेरी का उपयोग करने से बेहतर प्रदर्शन करना चाहिए।
SELECT A.*, B.*
FROM A JOIN B ON B.ID = A.ID
JOIN (SELECT ID, MAX(Time) AS Time FROM B GROUP BY ID) AS B2
ON (B.ID, B.Time) = (B2.ID, B2.Time)
पुनश्च:मैंने greatest-n-per-group
जोड़ा है उपनाम। इस प्रकार का SQL प्रश्न हर सप्ताह स्टैक ओवरफ़्लो पर आता है, इसलिए आप उस टैग का अनुसरण करके दर्जनों समान प्रश्न और उनके उत्तर देख सकते हैं।