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

แสดงเฉพาะ ID สลับกัน (Alternate) ใน MySQL ด้วย IN แทน Loop

แทนที่จะเขียน Loop ใน Application เพื่อดึง ID คู่หรือคี่ ให้ใช้ WHERE Id IN (...) ระบุรายการ ID ที่ต้องการโดยตรงใน Query

ตัวอย่างการสร้างตาราง

mysql> create table DemoTable ( 
    ClientId int, 
    ClientName varchar(100), 
    ClientAge int ); 
Query OK, 0 rows affected (0.70 sec)

เพิ่มข้อมูล Client

mysql> insert into DemoTable values(100,'Chris',34); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(101,'Robert',31); 
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(103,'David',33); 
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(104,'Mike',45); 
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(105,'Sam',39); 
Query OK, 1 row affected (0.09 sec)

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

mysql> select * from DemoTable;
+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 100      | Chris      | 34        |
| 101      | Robert     | 31        |
| 103      | David      | 33        |
| 104      | Mike       | 45        |
| 105      | Sam        | 39        |
+----------+------------+-----------+
5 rows in set (0.00 sec)

คำสั่ง SELECT เฉพาะ ID 101, 103, 105 (คี่/สลับ)

mysql> select ClientId, ClientName, ClientAge 
from DemoTable where ClientId IN(101, 103, 105);

ผลลัพธ์

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
| 101      | Robert     | 31        |
| 103      | David      | 33        |
| 105      | Sam        | 39        |
+----------+------------+-----------+
3 rows in set (0.00 sec)

คำอธิบาย: ใช้ IN (101, 103, 105) แทนการ Loop ในโค้ด Application ทำให้:

  • Query เดียว จบใน Database (Network round-trip น้อย)
  • ใช้ Index ได้ (หากมี Index บน ClientId)
  • โค้ดสั้น อ่านง่าย Maintain ได้ง่าย

กรณี ID เป็นลำดับต่อเนื่อง: ใช้ WHERE ClientId BETWEEN 101 AND 105 AND ClientId % 2 = 1 (Modulo หาคี่/คู่)