SELECT Orders.OrderNumber, LineItems.Quantity, LineItems.Description
FROM Orders
JOIN LineItems
ON LineItems.LineItemGUID =
(
SELECT TOP 1 LineItemGUID
FROM LineItems
WHERE OrderID = Orders.OrderID
)
SQL सर्वर 2005 और इसके बाद के संस्करण में, आप बस INNER JOIN
को बदल सकते हैं CROSS APPLY
के साथ :
SELECT Orders.OrderNumber, LineItems2.Quantity, LineItems2.Description
FROM Orders
CROSS APPLY
(
SELECT TOP 1 LineItems.Quantity, LineItems.Description
FROM LineItems
WHERE LineItems.OrderID = Orders.OrderID
) LineItems2
कृपया ध्यान दें कि TOP 1
बिना ORDER BY
नियतात्मक नहीं है:यह प्रश्न आपको प्रति आदेश एक पंक्ति वस्तु प्राप्त करेगा, लेकिन यह परिभाषित नहीं है कि यह कौन सा होगा।
क्वेरी के एकाधिक आमंत्रण आपको एक ही क्रम के लिए अलग-अलग लाइन आइटम दे सकते हैं, भले ही अंतर्निहित में बदलाव न हुआ हो।
यदि आप नियतात्मक क्रम चाहते हैं, तो आपको ORDER BY
जोड़ना चाहिए अंतरतम क्वेरी के लिए खंड।
उदाहरण sqlfiddle