Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เขียน Query MySQL เดียวเพื่อแสดงข้อมูลสำหรับหลายค่า Input ด้วย BETWEEN

เมื่อต้องการ Query ข้อมูลที่อยู่ในช่วง (Range) ของค่า ID หรือตัวเลขติดต่อกัน ใช้ BETWEEN Operator จะเขียนสั้นกว่าและอ่านง่ายกว่าการใช้ >= และ <= แยกกัน

ตัวอย่างการใช้งาน BETWEEN

1. สร้างตารางนักเรียน (มี Auto Increment ID)

mysql> CREATE TABLE DemoTable1537 (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.72 sec)

2. เพิ่มข้อมูลนักเรียน 7 คน

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)

3. แสดงข้อมูลทั้งหมด

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)

4. Query ข้อมูล ID 3 ถึง 6 ด้วย BETWEEN

mysql> SELECT StudentName FROM DemoTable1537 WHERE StudentId BETWEEN 3 AND 6;
+-------------+
| StudentName |
+-------------+
| Sam         |
| Mike        |
| David       |
| John        |
+-------------+
4 rows in set (0.00 sec)

รายละเอียดเพิ่มเติม

  • BETWEEN เป็น Inclusive: รวมค่าทั้งปลายทาง (3 และ 6)
  • เทียบเท่ากับ: WHERE StudentId >= 3 AND StudentId <= 6
  • ใช้กับ Date ได้: WHERE OrderDate BETWEEN '2024-01-01' AND '2024-12-31'
  • ใช้กับ String ได้: เรียงตามลำดับ Lexicographical (ตัวอักษร)

เมื่อไหร่ควรใช้ BETWEEN / เมื่อไหร่ควรใช้ IN()

สถานการณ์Operator ที่เหมาะสม
ค่าติดต่อกันเป็นช่วง (1-100, วันที่ 1-31)BETWEEN
ค่าไม่ติดต่อกัน เลือกเฉพาะบางค่า (1,5,10,20)IN()
ค่ามากมาย (หลายร้อยขึ้นไป)JOIN กับ Temp Table / VALUES()