Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में WHERE 1=0 का उपयोग: खाली परिणाम सेट प्राप्त करने के लिए

MySQL में WHERE 1=0 कंडीशन का उपयोग करके क्वेरी को **कोई पंक्ति न लौटाने** के लिए बाध्य कर सकते हैं। यह हमेशा FALSE होता है, इसलिए परिणाम Empty set होता है।

सिंटैक्स

SELECT * FROM yourTableName WHERE 1=0;

उदाहरण के साथ समझें

टेबल बनाएं और डेटा डालें:

CREATE TABLE ConditionDemo (
    Id INT NOT NULL AUTO_INCREMENT,
    Name VARCHAR(10),
    PRIMARY KEY(Id)
);

INSERT INTO ConditionDemo(Name) VALUES('Larry');
INSERT INTO ConditionDemo(Name) VALUES('Sam');
INSERT INTO ConditionDemo(Name) VALUES('Mike');
INSERT INTO ConditionDemo(Name) VALUES('Carol');
INSERT INTO ConditionDemo(Name) VALUES('John');
INSERT INTO ConditionDemo(Name) VALUES('Bob');

सभी रिकॉर्ड देखें:

SELECT * FROM ConditionDemo;

आउटपुट (6 पंक्तियाँ):

+----+-------+
| Id | Name  |
+----+-------+
| 1  | Larry |
| 2  | Sam   |
| 3  | Mike  |
| 4  | Carol |
| 5  | John  |
| 6  | Bob   |
+----+-------+

WHERE 1=0 के साथ क्वेरी

mysql> SELECT * FROM ConditionDemo WHERE 1=0;
Empty set (0.00 sec)

उपयोग के मामले

1. टेबल संरचना देखें (डेटा के बिना)

SELECT * FROM large_table WHERE 1=0;

DESC या SHOW COLUMNS से तेज हो सकता है कुछ मामलों में।

2. डायनामिक SQL में कंडीशनल WHERE

-- एप्लिकेशन कोड में
$where = $hasFilter ? "status = 'active'" : "1=0";
$sql = "SELECT * FROM users WHERE $where";

3. INSERT ... SELECT में टेबल बनाएं (केवल संरचना)

CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;

यह CREATE TABLE new_table LIKE old_table के समान है।

4. UNION में पहला भाग खाली रखें

(SELECT * FROM table1 WHERE 1=0)
UNION ALL
(SELECT * FROM table2 WHERE condition);

5. क्वेरी प्लान/एक्सप्लेन विश्लेषण

EXPLAIN SELECT * FROM large_table WHERE 1=0;

पूरा टेबल स्कैन किए बिना एक्जीक्यूशन प्लान देख सकते हैं।

समान प्रभाव वाले अन्य एक्सप्रेशन

WHERE 0
WHERE FALSE
WHERE 1=2
WHERE 'a' = 'b'
WHERE NULL  -- NULL भी FALSE जैसा व्यवहार करता है WHERE में

नोट

  • 1=0 कंपाइल-टाइम कॉन्स्टेंट है, ऑप्टिमाइज़र इसे तुरंत पहचान लेता है
  • कोई टेबल स्कैन नहीं होता - तुरंत खाली परिणाम लौटाता है
  • WHERE 0=0 या WHERE 1=1 सभी पंक्तियाँ लौटाता है (हमेशा TRUE)
  1. - MySQL SELECT क्वेरी एकाधिक WHERE के साथ?

    एकाधिक WHERE लागू करने के लिए, MySQL में IN() का उपयोग करें। सिंटैक्स निम्नलिखित है: SELECT * FROM yourTableName WHERE yourColumnName IN(yourValue1, yourValue2, ... N); आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable ( Id INT, Name VARCHAR(100) ); टेबल में कुछ रिकॉर्ड डालें: INSERT INTO

  1. - MySQL क्वेरी उन सभी पंक्तियों को खोजने के लिए जहां आईडी 4 से विभाज्य हो?

    आइए पहले एक टेबल बनाते हैं जिसमें एक कॉलम आईडी के रूप में हो: CREATE TABLE DemoTable ( ID INT, StudentName VARCHAR(10), CountryName VARCHAR(20) ); टेबल में कुछ रिकॉर्ड डालें: INSERT INTO DemoTable VALUES(10, Mike, AUS); टेबल से सभी रिकॉर्ड प्रदर्शित करें: SELECT * FROM DemoTable; आउटप

  1. - MySQL में FLOOR() फंक्शन का उपयोग करके व्होल नंबर डेसीमल वाले रिकॉर्ड्स कैसे खोजें

    FLOOR() फंक्शन के साथ पूर्णांक डेसीमल मान खोजना डेसीमल कॉलम में केवल वही रिकॉर्ड्स खोजें जो पूर्णांक हैं (जैसे 12.00, 35.00) FLOOR() फंक्शन का उपयोग करके। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( Value DECIMAL(4,2) ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable