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)