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

MySQL: SELECT ช่วงค่า ใช้ BETWEEN แทน IN

ปัญหา: IN() ไม่ใช่ Range

IN(4,10) คืนแค่ 4 และ 10 → ไม่ได้คืน 5,6,7,8,9

แก้ด้วย BETWEEN (Inclusive)

SELECT * FROM table WHERE column BETWEEN 4 AND 10;

คืน 4,5,6,7,8,9,10 (รวมปลายทั้งสอง)

ตัวอย่าง

สร้างตาราง 1-15

mysql> create table SelectInWithBetweenDemo (PortalId int);
mysql> insert into SelectInWithBetweenDemo values(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12),(13),(14),(15);

IN(4,10) → ได้แค่ 2 แถว

mysql> select PortalId from SelectInWithBetweenDemo where PortalId IN(4,10);
+----------+
| PortalId |
+----------+
| 4        |
| 10       |
+----------+

BETWEEN 4 AND 10 → ได้ 7 แถว

mysql> select PortalId from SelectInWithBetweenDemo where PortalId BETWEEN 4 AND 10;
+----------+
| PortalId |
+----------+
| 4        |
| 5        |
| 6        |
| 7        |
| 8        |
| 9        |
| 10       |
+----------+

Exclusive Range (ไม่รวมปลาย)

SELECT * FROM table WHERE column > 4 AND column < 10;
+----------+
| PortalId |
+----------+
| 5        |
| 6        |
| 7        |
| 8        |
| 9        |
+----------+

สรุป

Operatorรวมปลายตัวอย่าง
BETWEENใช่4 ถึง 10 → 4,5,6,7,8,9,10
> AND <ไม่>4 AND <10 → 5,6,7,8,9
INเฉพาะค่าระบุIN(4,10) → 4,10