MySQL WHERE क्लॉज़: AND, OR, IN, NOT IN क्वेरी उदाहरण
⚡ स्मार्ट सारांश
MySQL WHERE क्लॉज़, SELECT, UPDATE और DELETE स्टेटमेंट्स पर सटीक मानदंड लागू करते हुए, परिणाम सेट तक पहुँचने से पहले ही पंक्तियों को फ़िल्टर करता है। AND, OR, IN, NOT IN और तुलना ऑपरेटरों को समझने से शुरुआती लोगों को क्वेरी द्वारा आवश्यक सटीक रिकॉर्ड प्राप्त करने में मदद मिलती है।
WHERE क्लॉज क्या है? MySQL?
कहां कारण in MySQL एक कीवर्ड है जिसका उपयोग डेटा या पंक्तियों के सटीक मानदंड को निर्दिष्ट करने के लिए किया जाता है जो निर्दिष्ट SQL कथन से प्रभावित होंगे। WHERE क्लॉज का उपयोग SQL कथनों जैसे INSERT, UPDATE, SELECT और DELETE के साथ रिकॉर्ड को फ़िल्टर करने और डेटा पर विभिन्न ऑपरेशन करने के लिए किया जा सकता है।
हमने देखा कि डेटा को कैसे क्वेरी किया जाए डेटाबेस पिछले ट्यूटोरियल में दिए गए SELECT कथन का उपयोग करके। SELECT कथन ने क्वेरी किए गए डेटाबेस टेबल से सभी परिणाम लौटाए।
हालांकि, कई बार हमें क्वेरी परिणामों को किसी विशिष्ट शर्त तक सीमित करना होता है। SQL में WHERE क्लॉज़ ऐसी स्थितियों में बहुत उपयोगी होता है, और यह उसी तरह काम करता है जैसे किसी अन्य क्वेरी में। डिलीट या अपडेट क्वेरी जैसा कि यह एक SELECT क्वेरी में करता है।
WHERE क्लॉज सिंटैक्स
WHERE क्लॉज़ का मूल सिंटैक्स इस प्रकार है।
SELECT * FROM tableName WHERE condition;
यहाँ
- “टेबलनाम से * का चयन करें” मानक है चयन कथन
- "कहाँ" यह वह कीवर्ड है जो परिणाम सेट को प्रतिबंधित करता है, और "स्थिति" यह परिणामों पर लागू किया गया फ़िल्टर है। फ़िल्टर एक रेंज, एक एकल मान या एक उप-क्वेरी हो सकता है।
मान लीजिए कि हमें सदस्यों की तालिका से किसी सदस्य का विवरण चाहिए, जिसकी सदस्यता संख्या 1 है। नीचे दिया गया स्क्रिप्ट यही कार्य करता है।
SELECT * FROM `members` WHERE `membership_number` = 1;
इस स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र “myflixdb” पर नीचे दिया गया परिणाम प्राप्त होता है।
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
एक ही शर्त अक्सर पर्याप्त नहीं होती। नीचे दिए गए अनुभाग WHERE को इसके साथ जोड़ते हैं। लॉजिकल ऑपरेटर्स.
WHERE क्लॉज को – के साथ संयुक्त किया गया और तार्किक Operaटो
AND लॉजिकल ऑपरेटर के साथ, एक पंक्ति तभी वापस की जाती है जब सभी निर्दिष्ट मानदंड पूरे होते हैं।
मान लीजिए कि हम श्रेणी 2 की वे सभी फिल्में चाहते हैं जो 2008 में रिलीज हुई थीं। नीचे दी गई स्क्रिप्ट यही काम करती है।
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
उपरोक्त स्क्रिप्ट को “myflixdb” के विरुद्ध निष्पादित करने पर निम्नलिखित परिणाम प्राप्त होता है।
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
AND परिणाम समूह को संकुचित करता है। OR इसे विस्तृत करता है।
WHERE क्लॉज को – के साथ संयुक्त किया गया OR तार्किक Operaटो
OR ऑपरेटर के साथ, यदि निर्दिष्ट मानदंडों में से कोई भी पूरा होता है तो एक पंक्ति वापस की जाती है।
निम्नलिखित स्क्रिप्ट श्रेणी 1 या श्रेणी 2 में आने वाली सभी फिल्मों को प्राप्त करती है।
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
परिणाम नीचे दिखाया गया है।
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
कई OR शर्तों को एक साथ जोड़ने से पढ़ना मुश्किल हो जाता है। IN कीवर्ड इस समस्या को हल करता है।
WHERE क्लॉज को – के साथ संयुक्त किया गया IN खोजशब्द
WHERE क्लॉज़, जब IN कीवर्ड के साथ प्रयोग किया जाता है, तो केवल उन्हीं पंक्तियों को प्रभावित करता है जिनके मान दी गई सूची से मेल खाते हैं। IN का उपयोग करने से OR क्लॉज़ की संख्या कम हो जाती है जो अन्यथा आपको लिखनी पड़ती।
निम्नलिखित MySQL WHERE IN क्वेरी उन पंक्तियों को दर्शाती है जहां membership_number या तो 1, 2 या 3 है।
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
परिणाम नीचे दिखाया गया है।
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
NOT IN विपरीत फ़िल्टर का कार्य करता है।
WHERE क्लॉज को – के साथ संयुक्त किया गया अंदर नही खोजशब्द
NOT IN कीवर्ड के साथ, WHERE क्लॉज़ उन सभी पंक्तियों को बाहर कर देता है जिनका मान दी गई सूची से मेल खाता है।
निम्नलिखित क्वेरी उन पंक्तियों को दर्शाती है जहां membership_number 1, 2 या 3 नहीं है।
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
परिणाम नीचे दिखाया गया है।
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
WHERE तुलना ऑपरेटरों का उपयोग करके आकार और समानता के आधार पर मानों को फ़िल्टर भी करता है।
WHERE क्लॉज को – के साथ संयुक्त किया गया तुलना Operaमरोड़
कम (<), बराबर (=), अधिक (>) और बराबर नहीं (<>) तुलना ऑपरेटरों का उपयोग WHERE क्लॉज़ के साथ किया जा सकता है।
= के बराबर
निम्नलिखित स्क्रिप्ट समान तुलना ऑपरेटर का उपयोग करके सदस्य तालिका से सभी महिला सदस्यों को प्राप्त करती है।
SELECT * FROM `members` WHERE `gender` = 'Female';
परिणाम नीचे दिखाया गया है।
| membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> से अधिक
निम्नलिखित स्क्रिप्ट भुगतान तालिका से 2,000 से अधिक सभी भुगतान प्राप्त करती है।
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
परिणाम नीचे दिखाया गया है।
| payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
|---|---|---|---|---|---|
| 1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
| 3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
बराबर नहीं
निम्नलिखित स्क्रिप्ट उन सभी फिल्मों को प्राप्त करती है जिनकी श्रेणी आईडी 1 नहीं है।
SELECT * FROM `movies` WHERE `category_id` <> 1;
परिणाम नीचे दिखाया गया है।
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
| 5 | Daddy's Little Girls | NULL | 2007 | 8 |
| 6 | Angels and Demons | NULL | 2007 | 6 |
| 7 | Davinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
त्वरित संदर्भ: WHERE खंड Operaमरोड़
WHERE के साथ सबसे अधिक बार उपयोग किए जाने वाले ऑपरेटरों का सारांश नीचे दिया गया है। पूर्ण परिभाषाएँ आगे दी गई हैं। MySQL ऑपरेटर संदर्भ.
| Operaटो | अर्थ | उदाहरण स्थिति |
|---|---|---|
| = | के बराबर | `लिंग` = 'महिला' |
| <> | बराबर नही है | `category_id` <> 1 |
| > / | से अधिक / से कम | `भुगतान की गई राशि` > 2000 |
| और / या | सभी मानदंड / कोई भी मानदंड | `category_id` = 2 AND `year_released` = 2008 |
| में / में नहीं | मिलान/बहिष्करण सूची | `सदस्यता_संख्या` IN (1,2,3) |
| शून्य है / शून्य नहीं है | लुप्त मानों के लिए परीक्षण | `डाक पता` शून्य है |
⚠️ नोट: NULL कभी भी = या <> से मेल नहीं खाता। जब किसी कॉलम में कोई मान न हो, तो IS NULL या IS NOT NULL का उपयोग करें।
दिमागी पहेली: देर से लौटाई गई फिल्मों को ढूंढें
मान लीजिए कि हम उन किराए पर ली गई फिल्मों को देखना चाहते हैं जिन्हें 25/06/2012 की अंतिम तिथि तक वापस नहीं किया गया था। WHERE को 'लेस दैन' ऑपरेटर और AND के साथ मिलाकर यह लक्ष्य प्राप्त किया जा सकता है।
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
उपरोक्त स्क्रिप्ट को निष्पादित करना MySQL कार्यक्षेत्र निम्नलिखित परिणाम देता है।
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |


