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

MySQL - SELECT … WHERE id IN (..) เรียงลำดับคอลัมน์ใดคอลัมน์หนึ่ง


คุณสามารถเลือก ….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 วินาที)