Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

पहली पंक्ति में कैसे जुड़ें

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर गुम अनुक्रमणिका

  2. 2 तिथियों के बीच प्रत्येक तिथि के लिए रिकॉर्ड की संख्या की गणना करें

  3. आप एक संग्रहित प्रो में वापस आने वाले डेटासेट की टेबल्स का नाम कैसे दे सकते हैं?

  4. तालिका को छोटा नहीं किया जा सकता क्योंकि इसे एक विदेशी कुंजी बाधा द्वारा संदर्भित किया जा रहा है - SQL सर्वर / TSQL ट्यूटोरियल भाग 70

  5. SQL सर्वर कर्सर में एकाधिक मान प्राप्त करें