दिलचस्प पोस्ट
क्या है और मुझे इसका उपयोग कब करना चाहिए? Silverlight के साथ एक WP7 अनुप्रयोग में GIF प्रदर्शित करें मल्टी लाइन प्रीप्रोसेसर मैक्रोज़ कैसे PDO डेटाबेस प्रश्नों डीबग करने के लिए? सी # में ग्लोबल हॉटकी प्रोसेसिंग से निपटने का सर्वोत्तम तरीका? सी ++ क्रॉस प्लेटफॉर्म उच्च-रिज़ॉल्यूशन टाइमर बैच स्क्रिप्ट में दो नंबर की तुलना करना जावास्क्रिप्ट या jquery का उपयोग करके ईमेल कैसे भेजें मैं Node.js के साथ कैसे आरंभ करूं जावास्क्रिप्ट का उपयोग कर एक बहु-चयन बॉक्स में ctrl-click की आवश्यकता से कैसे बचें? एंड्रॉइड: मैं इसे हिला करना चाहता हूं रूबी पर रेल में मेरे JSON आउटपुट को मैं कैसे "सुंदर" प्रारूप में कर सकता हूं? क्या एमएसटीईस्ट एनयूएनआईटी के टेस्टसीज़ के बराबर है? जब कोई संपत्ति का मूल्य बदल जाता है तो कोई घटना बढ़ाएं? रूबी में 'संदर्भ से पैरामीटर पास'

एसक्यूएल – एक तालिका से रिकॉर्ड खोजें जो दूसरे में मौजूद नहीं है

मेरे पास निम्न दो एसक्यूएल टेबल हैं (MySQL में):

Phone_book +----+------+--------------+ | id | name | phone_number | +----+------+--------------+ | 1 | John | 111111111111 | +----+------+--------------+ | 2 | Jane | 222222222222 | +----+------+--------------+ Call +----+------+--------------+ | id | date | phone_number | +----+------+--------------+ | 1 | 0945 | 111111111111 | +----+------+--------------+ | 2 | 0950 | 222222222222 | +----+------+--------------+ | 3 | 1045 | 333333333333 | +----+------+--------------+ 

मुझे किस प्रकार पता चलेगा कि कौन-से कॉल लोगों द्वारा किए गए हैं जिनकी phone_number संख्या phone_number में नहीं है? वांछित उत्पादन होगा:

 Call +----+------+--------------+ | id | date | phone_number | +----+------+--------------+ | 3 | 1045 | 333333333333 | +----+------+--------------+ 

कोई भी सहायताकाफी प्रशंसनीय होगी।

वेब के समाधान से एकत्रित समाधान "एसक्यूएल – एक तालिका से रिकॉर्ड खोजें जो दूसरे में मौजूद नहीं है"

आपके क्वेरी ऑप्टिमाइज़र कितने अच्छे हैं, और आपके दो तालिकाओं के रिश्तेदार आकार के आधार पर अलग-अलग दक्षता के साथ ऐसा करने के कई अलग-अलग तरीके हैं:

यह कम से कम कथन है, और अगर आपकी फोन बुक बहुत कम है तो तेज़ हो सकता है:

 SELECT * FROM Call WHERE phone_number NOT IN (SELECT phone_number FROM Phone_book) 

वैकल्पिक रूप से ( अल्टर लाइफ के लिए धन्यवाद)

 SELECT * FROM Call WHERE NOT EXISTS (SELECT * FROM Phone_book WHERE Phone_book.phone_number = Call.phone_number) 

या (डब्ल्यूओपीआर के लिए धन्यवाद)

 SELECT * FROM Call LEFT OUTER JOIN Phone_Book ON (Call.phone_number = Phone_book.phone_number) WHERE Phone_book.phone_number IS NULL 

(इसे अनदेखा करते हुए, जैसा कि दूसरों ने कहा है, यह केवल आपके द्वारा चुने जाने वाले स्तंभों का चयन करने के लिए सबसे बेहतर है, नहीं ' * ')

 SELECT Call.ID, Call.date, Call.phone_number FROM Call LEFT OUTER JOIN Phone_Book ON (Call.phone_number=Phone_book.phone_number) WHERE Phone_book.phone_number IS NULL 

क्वॉरी ऑप्टिमाइज़र को अपने जादू का काम करने की इजाजत देकर, सबक्वियरी निकालना चाहिए।

इसके अलावा, "SELECT *" से बचें क्योंकि यह आपके कोड को तोड़ सकता है अगर कोई अंतर्निहित तालिकाओं या विचारों को बदल देता है (और यह अक्षम है)

बड़े डेटासेट के साथ व्यवहार करते समय नीचे दिए गए प्रश्नों के नीचे दिए गए कोड थोड़ा और अधिक कुशल होंगे।

 SELECT * FROM Call WHERE NOT EXISTS (SELECT 'x' FROM Phone_book where Phone_book.phone_number = Call.phone_number) 

मुझे लगता है

 SELECT CALL.* FROM CALL LEFT JOIN Phone_book ON CALL.id = Phone_book.id WHERE Phone_book.name IS NULL 
 SELECT DISTINCT Call.id FROM Call LEFT OUTER JOIN Phone_book USING (id) WHERE Phone_book.id IS NULL 

यह अतिरिक्त आईडी-एस जो आपकी Phone_book तालिका में अनुपलब्ध हैं वापस लौट आएंगे।

 SELECT t1.ColumnID, CASE WHEN NOT EXISTS( SELECT t2.FieldText FROM Table t2 WHERE t2.ColumnID = t1.ColumnID) THEN t1.FieldText ELSE t2.FieldText END FieldText FROM Table1 t1, Table2 t2 
 SELECT name, phone_number FROM Call a WHERE a.phone_number NOT IN (SELECT b.phone_number FROM Phone_book b) 

वैकल्पिक रूप से,

 select id from call minus select id from phone_number