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

दो अलग-अलग परिणाम सेट प्राप्त करने के रूप में इन दो प्रश्नों में क्या अंतर है?

जब आप इनर जॉइन में ऐसा करते हैं तो इससे वास्तव में कोई फर्क नहीं पड़ता।

हालांकि, जब आप बाएँ या दाएँ जॉइन का उपयोग करते हैं, तो यह करता है इससे फर्क पड़ता है कि आप अतिरिक्त फ़िल्टर को JOIN में डालते हैं या WHERE क्लॉज़ में।

जब आप फ़िल्टर को WHERE क्लॉज़ में डालते हैं, तो SQL सर्वर पहले जॉइन करता है, और फिर पूरी तरह उन पंक्तियों को फ़िल्टर कर देता है जहां फ़िल्टर फ़िट नहीं होता है।
--> इससे वापस आने वाली पंक्तियों की संख्या कम हो जाएगी

जब आप फ़िल्टर को जॉइन में डालते हैं, तो SQL सर्वर शामिल होने के दौरान फ़िल्टरिंग करता है, लेकिन केवल उस तालिका पर जहाँ आप फ़िल्टर डालते हैं।
आपको अभी भी अन्य तालिकाओं से सभी पंक्तियाँ मिलती हैं, लेकिन केवल उन्हीं में डेटा होता है फ़िल्टर की गई तालिका से जहां फ़िल्टर फिट बैठता है।
--> इससे पंक्तियों की संख्या कम नहीं होगी, लेकिन फ़िल्टर तालिका के डेटा वाले स्तंभ अधिक पंक्तियों में खाली हो जाएंगे

इसे समझाना मुश्किल है...इसे और स्पष्ट करने के लिए, यहां एक उदाहरण दिया गया है:

से नमूना डेटा लें RedFilter का उत्तर :

CREATE TABLE [dbo].[t1](
    [ID] [int] NULL,
    [StatusID] [int] NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[t2](
    [ID] [int] NULL
) ON [PRIMARY]
INSERT INTO t1 (ID, StatusID) VALUES (1, 10)
INSERT INTO t1 (ID, StatusID) VALUES (2, 11)
INSERT INTO t1 (ID, StatusID) VALUES (3, 12)
INSERT INTO t1 (ID, StatusID) VALUES (4, 12)
INSERT INTO t2 (ID) VALUES (1)
INSERT INTO t2 (ID) VALUES (3)
INSERT INTO t2 (ID) VALUES (5)

...और उस पर निम्नलिखित क्वेरी चलाएँ:

/* this returns four rows, but only two will have data 
from the second table in the second column */
SELECT t1.ID, t2.ID
FROM t1 
LEFT JOIN t2 ON t1.Id = t2.Id 

/* this returns only one row: the one where t2.ID = 1 */
SELECT t1.ID, t2.ID
FROM t1 
LEFT JOIN t2 ON t1.Id = t2.Id 
WHERE t2.ID = 1 

/* this returns four rows as in the first query, but only one 
row will have data in the second column: the one where t2.ID = 1 */
SELECT t1.ID, t2.ID
FROM t1 
LEFT JOIN t2 ON t1.Id = t2.Id 
AND t2.ID = 1 

टिप्पणियों में बताए अनुसार विभिन्न परिणामों पर ध्यान दें।



  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 सर्वर डीबी तालिका में CSV फ़ाइल का डेटा कैसे सम्मिलित करें

  2. एसएसआईएस फ्लैट फ़ाइल स्रोत में खराब पंक्ति को कैसे छोड़ें?

  3. Android में JTDS ड्राइवर का उपयोग करके sql सर्वर को कैसे कनेक्ट करें

  4. SQL सर्वर प्रबंधन स्टूडियो 2008 में मेरे द्वारा बनाए गए ट्रिगर नहीं देख सकते हैं

  5. SQL सर्वर (T-SQL) में डेटाबेस मेल खातों की सूची प्राप्त करें