MySQL में BETWEEN ऑपरेटर का उपयोग करके रेंज क्वेरी
BETWEEN ऑपरेटर आपको एक समावेशी रेंज में मानों का चयन करने की अनुमति देता है। यह कई OR शर्तों या IN() सूची लिखने की तुलना में संख्यात्मक या तिथि रेंज के लिए अधिक संक्षिप्त और पठनीय है।
टेबल बनाना
mysql> CREATE TABLE DemoTable1537 (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName VARCHAR(20)
-> );
Query OK, 0 rows affected (0.72 sec)
डेटा डालना
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('Bob');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('Sam');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('Mike');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('David');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('John');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1537(StudentName) VALUES ('Carol');
Query OK, 1 row affected (0.12 sec)
सभी रिकॉर्ड्स देखना
mysql> SELECT * FROM DemoTable1537;
+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1 | Chris |
| 2 | Bob |
| 3 | Sam |
| 4 | Mike |
| 5 | David |
| 6 | John |
| 7 | Carol |
+-----------+-------------+
7 rows in set (0.00 sec)
BETWEEN का उपयोग करके रेंज क्वेरी (ID 3 से 6 तक)
mysql> SELECT StudentName FROM DemoTable1537
-> WHERE StudentId BETWEEN 3 AND 6;
परिणाम
+-------------+
| StudentName |
+-------------+
| Sam |
| Mike |
| David |
| John |
+-------------+
4 rows in set (0.00 sec)
BETWEEN की मुख्य विशेषताएं
- समावेशी: दोनों अंत मान शामिल हैं (3 और 6 दोनों शामिल)
- क्रम महत्वपूर्ण है:
BETWEEN low AND high- low, high से कम या बराबर होना चाहिए - डेटा प्रकार: संख्या, तिथि, स्ट्रिंग (वर्णानुक्रम क्रम) के साथ काम करता है
समतुल्य WHERE क्लॉज
-- ये समान हैं:
WHERE StudentId BETWEEN 3 AND 6
WHERE StudentId >= 3 AND StudentId <= 6
तिथियों के साथ BETWEEN
SELECT * FROM Orders
WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31';
स्ट्रिंग्स के साथ BETWEEN (वर्णानुक्रम)
SELECT * FROM Products
WHERE ProductName BETWEEN 'A' AND 'M'; -- A से M तक के नाम
NOT BETWEEN
SELECT * FROM DemoTable1537
WHERE StudentId NOT BETWEEN 3 AND 6; -- 1,2,7 लौटाएगा
प्रदर्शन युक्ति
BETWEEN कॉलम पर इंडेक्स का उपयोग कर सकता है। बड़े टेबल्स पर रेंज क्वेरी के लिए, सुनिश्चित करें कि फ़िल्टर किए गए कॉलम पर इंडेक्स है:
CREATE INDEX idx_student_id ON DemoTable1537(StudentId);
सावधानी: तिथि/समय के साथ BETWEEN
-- यदि OrderDate DATETIME है:
WHERE OrderDate BETWEEN '2024-01-01' AND '2024-01-31'
-- '2024-01-31 14:30:00' को बाहर कर देगा क्योंकि '2024-01-31' का अर्थ '2024-01-31 00:00:00' है
-- बेहतर:
WHERE OrderDate >= '2024-01-01' AND OrderDate < '2024-02-01'