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

เรียงลำดับตามค่าในคำสั่งเลือก MySQL IN clause?


คุณสามารถใช้ฟังก์ชัน field() กับ ORDER BY clause เพื่อเรียงลำดับตามค่าได้ ไวยากรณ์มีดังนี้

เลือก *จาก yourTableNameWHERE yourColumnName IN(Value1,Value2,Value3,.......N);ORDER BY FIELD(yourColumnName ,Value1,Value2,Value3,.......N); 

เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้

mysql> สร้างตาราง SelectInDemo -> ( -> StudentId int, -> StudentName varchar(100), -> StudentAge int -> );Query OK, 0 แถวได้รับผลกระทบ (1.04 วินาที)

แทรกระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้

mysql> แทรกลงในค่า SelectInDemo (1,'Mike',23); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า SelectInDemo (10,'Bob',21); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า SelectInDemo (11, 'Carol', 30); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.25 วินาที) mysql> แทรกลงในค่า SelectInDemo (15, 'Sam', 24); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า SelectInDemo (20,'John',26); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที) mysql> แทรกลงในค่า SelectInDemo (101, 'David', 27); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.25 วินาที)mysql> แทรกลงในค่า SelectInDemo (96,'จัสติน',23);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.27 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้

mysql> เลือก *จาก SelectInDemo;

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+-------------+-----------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentAge |+-----------+-------------+-----------+| 1 | ไมค์ | 23 || 10 | บ๊อบ | 21 || 11 | แครอล | 30 || 15 | แซม | 24 || 20 | จอห์น | 26 || 101 | เดวิด | 27 || 96 | จัสติน | 23 |+-----------+--------------------+-----------+7 แถวในชุด (0.00 วินาที)

นี่คือคิวรีที่จะใช้ IN กับคำสั่ง SELECT ใน MySQL

mysql> เลือก *จาก SelectInDemo -> โดยที่ StudentId IN (1,96,101,10,15,11,20) -> เรียงลำดับตามฟิลด์ (StudentId,1,96,101,10,15,11,20); 

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+-------------+-----------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentAge |+-----------+-------------+-----------+| 1 | ไมค์ | 23 || 96 | จัสติน | 23 || 101 | เดวิด | 27 || 10 | บ๊อบ | 21 || 15 | แซม | 24 || 11 | แครอล | 30 || 20 | จอห์น | 26 |+-----------+--------------------+-----------+7 แถวในชุด (0.00 วินาที)

ให้เราดูสำหรับการสั่งซื้ออื่น

คำถามสำหรับลำดับที่สองมีดังนี้

mysql> เลือก *จาก SelectInDemo -> โดยที่ StudentId IN (1,10,11,15,20,101,96) -> เรียงลำดับตามฟิลด์ (StudentId,1,10,11,15,20,101,96); 

ต่อไปนี้เป็นผลลัพธ์

<ก่อนหน้า>+-----------+-------------+-----------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentAge |+-----------+-------------+-----------+| 1 | ไมค์ | 23 || 10 | บ๊อบ | 21 || 11 | แครอล | 30 || 15 | แซม | 24 || 20 | จอห์น | 26 || 101 | เดวิด | 27 || 96 | จัสติน | 23 |+-----------+--------------------+-----------+7 แถวในชุด (0.00 วินาที)