คุณสามารถเลือก ….WHERE id IN(..) โดยใช้ฟังก์ชัน field() เพื่อเรียงลำดับคอลัมน์ใดก็ได้ ไวยากรณ์มีดังนี้ −
เลือก *FROM yourTableName โดยที่ yourColumnName IN('value1','value2',.......N)ORDER BY FIELD(yourColumnName,value1','value2',.......N);
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง -
mysql> สร้างตาราง SelectOrderbyField -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(30), -> Age int, -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ ( 0.62 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า SelectOrderbyField(Name,Age)('John',23);Query OK, 1 แถวได้รับผลกระทบ (0.13 วินาที)mysql> แทรกลงในค่า SelectOrderbyField(Name,Age)('Carol',25);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงในค่า SelectOrderbyField (ชื่ออายุ) ('Bob',21); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน SelectOrderbyField (ชื่อ, อายุ) values('Mike',28);Query OK, 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงใน SelectOrderbyField(Name,Age) values('Sam',26);Query OK, 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า SelectOrderbyField(Name,Age)('David',23);Query OK, 1 แถวได้รับผลกระทบ (0.19 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก SelectOrderbyField;
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+----+---------+------+| รหัส | ชื่อ | อายุ |+----+-------+------+| 1 | จอห์น | 23 || 2 | แครอล | 25 || 3 | บ๊อบ | 21 || 4 | ไมค์ | 28 || 5 | แซม | 26 || 6 | เดวิด | 23 |+----+-------+------+6 แถวในชุด (0.00 วินาที)ต่อไปนี้เป็นข้อความค้นหาเพื่อเลือก ...where id in(..) โดยใช้ฟังก์ชัน order by field()
สั่งซื้อด้วยคอลัมน์ ID
แบบสอบถามมีดังต่อไปนี้ −
mysql> เลือก *จาก SelectOrderbyField โดยที่ Id IN (5,1,3,2,6,4) -> เรียงลำดับตามฟิลด์ (Id,5,1,3,2,6,4);
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+----+---------+------+| รหัส | ชื่อ | อายุ |+----+-------+------+| 5 | แซม | 26 || 1 | จอห์น | 23 || 3 | บ๊อบ | 21 || 2 | แครอล | 25 || 6 | เดวิด | 23 || 4 | ไมค์ | 28 |+----+-------+------+6 แถวในชุด (0.00 วินาที)ลำดับด้วยคอลัมน์ชื่อ
คุณสามารถสั่งซื้อได้อย่างถูกต้องตามคอลัมน์ชื่อ แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก SelectOrderbyField โดยที่ Name IN('Sam','John','Bob','Carol','David','Mike') -> เรียงลำดับตามฟิลด์ (ชื่อ,'Sam',' John','Bob','Carol','David','Mike');
ต่อไปนี้เป็นผลลัพธ์ -
<ก่อนหน้า>+----+---------+------+| รหัส | ชื่อ | อายุ |+----+-------+------+| 5 | แซม | 26 || 1 | จอห์น | 23 || 3 | บ๊อบ | 21 || 2 | แครอล | 25 || 6 | เดวิด | 23 || 4 | ไมค์ | 28 |+----+-------+------+6 แถวในชุด (0.03 วินาที)