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

उन पंक्तियों का चयन करें जो अन्य तालिका में मौजूद नहीं हैं

इस कार्य के लिए मूल रूप से 4 तकनीकें हैं, ये सभी मानक SQL हैं।

NOT EXISTS

पोस्टग्रेज में अक्सर सबसे तेज।

SELECT ip 
FROM   login_log l 
WHERE  NOT EXISTS (
   SELECT  -- SELECT list mostly irrelevant; can just be empty in Postgres
   FROM   ip_location
   WHERE  ip = l.ip
   );

इस पर भी विचार करें:

  • EXISTS सबक्वेरी में क्या पढ़ना आसान है?

LEFT JOIN / IS NULL

कभी-कभी यह सबसे तेज़ होता है। अक्सर सबसे छोटा। अक्सर एक ही क्वेरी योजना में परिणाम होता है NOT EXISTS

SELECT l.ip 
FROM   login_log l 
LEFT   JOIN ip_location i USING (ip)  -- short for: ON i.ip = l.ip
WHERE  i.ip IS NULL;

EXCEPT

छोटा। अधिक जटिल प्रश्नों में आसानी से एकीकृत नहीं है।

SELECT ip 
FROM   login_log

EXCEPT ALL  -- "ALL" keeps duplicates and makes it faster
SELECT ip
FROM   ip_location;

ध्यान दें कि (प्रति दस्तावेज़):

<ब्लॉककोट>

जब तक EXCEPT ALL . डुप्लीकेट हटा दिए जाते हैं उपयोग किया जाता है।

आमतौर पर, आपको ALL चाहिए खोजशब्द। यदि आप परवाह नहीं करते हैं, तब भी इसका उपयोग करें क्योंकि यह क्वेरी को तेज़ बनाता है ।

NOT IN

केवल NULL के बिना ही अच्छा है मान या यदि आप NULL को संभालना जानते हैं अछि तरह से। मैं नहीं होता इस उद्देश्य के लिए इसका इस्तेमाल करें। साथ ही, बड़ी तालिकाओं के साथ प्रदर्शन खराब हो सकता है।

SELECT ip 
FROM   login_log
WHERE  ip NOT IN (
   SELECT DISTINCT ip  -- DISTINCT is optional
   FROM   ip_location
   );

NOT IN NULL . के लिए एक "ट्रैप" वहन करता है दोनों तरफ के मान:

  • ऐसे रिकॉर्ड ढूंढें जहां जॉइन मौजूद नहीं है

MySQL पर लक्षित dba.SE पर समान प्रश्न:

  • उन पंक्तियों का चयन करें जहां पहले कॉलम में दूसरे कॉलम का मान मौजूद नहीं है


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. फ्लाई पर टेबल बनाने के लिए डेटाबेस डिज़ाइन

  2. postgresql - टेक्स्ट फ़ील्ड के भीतर एक स्ट्रिंग के सभी उदाहरणों को बदलें

  3. 2UDA के साथ KNN मशीन लर्निंग मॉडल का उपयोग कैसे करें - PostgreSQL और ऑरेंज (भाग 1)

  4. PostgreSQL के साथ धीमी क्वेरी से निपटना

  5. Docker पर PostgreSQL इंस्टॉलेशन