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

เลือกข้อมูลในลำดับที่กำหนดเองใน MySQL ด้วย IN() และ FIELD()

การเลือกและเรียงลำดับตามลำดับ ID ที่กำหนดด้วย IN() และ FIELD()

เมื่อต้องการดึงข้อมูลเฉพาะ ID บางชุด และเรียงตามลำดับที่เรากำหนด (ไม่ใช่ลำดับธรรมดา) เราใช้ WHERE ... IN(...) ร่วมกับ ORDER BY FIELD(...)

สร้างตารางและเพิ่มข้อมูล

mysql> CREATE TABLE DemoTable (
    StudentId VARCHAR(10),
    StudentName VARCHAR(20)
);
Query OK, 0 rows affected (4.11 sec)

mysql> INSERT INTO DemoTable VALUES('10001','Adam');
mysql> INSERT INTO DemoTable VALUES('1010','Chris');
mysql> INSERT INTO DemoTable VALUES('1020','Bob');
mysql> INSERT INTO DemoTable VALUES('1030','Carol');
mysql> INSERT INTO DemoTable VALUES('1040','Sam');

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

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10001     | Adam        |
| 1010      | Chris       |
| 1020      | Bob         |
| 1030      | Carol       |
| 1040      | Sam         |
+-----------+-------------+
5 rows in set (0.00 sec)

คำสั่งเลือกและเรียงตามลำดับที่กำหนด

mysql> SELECT * FROM DemoTable
    WHERE StudentId IN('1040','1010','1020','1030','10001')
    ORDER BY FIELD(StudentId, '1040','1010','1020','1030','10001');

ผลลัพธ์:

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1040      | Sam         |
| 1010      | Chris       |
| 1020      | Bob         |
| 1030      | Carol       |
| 10001     | Adam        |
+-----------+-------------+
5 rows in set (0.02 sec)

คำอธิบาย

  • WHERE StudentId IN(...) : กรองเฉพาะ ID ที่ต้องการ
  • ORDER BY FIELD(StudentId, ...) : เรียงตามลำดับที่ปรากฏในรายการ FIELD
  • ทั้ง IN และ FIELD ต้องมีรายการ ID เหมือนกันและครบถ้วน
  • เหมาะสำหรับการแสดงผลตามลำดับความสำคัญหรือลำดับที่ผู้ใช้กำหนด