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

เราสามารถส่งคืนผลลัพธ์การสืบค้นในลำดับเดียวกันกับค่าในคำสั่ง MySQL `IN(…)` ได้หรือไม่


ใช่ คุณสามารถทำสิ่งนี้ได้ด้วย ORDER BY FIELD() จาก MySQL ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable -> ( -> Number int -> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.54 วินาที)

แทรกระเบียนบางส่วนในตารางโดยใช้คำสั่ง insert -

mysql> แทรกลงในค่า DemoTable(19) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า DemoTable (30); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่า DemoTable ( 34); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.32 วินาที) mysql> แทรกลงในค่า DemoTable (28); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า DemoTable (25); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.12 วินาที) mysql> แทรกลงในค่า DemoTable (29); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable (24); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+---------+| เบอร์ |+-------+| 19 || 30 || 34 || 28 || 25 || 29 || 24 |+-------+7 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อส่งคืนผลลัพธ์ในลำดับเดียวกันกับชุดค่า -

mysql> เลือก *จาก DemoTable -> ORDER BY FIELD(Number, 30,19,34,25,28,29,24);

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้แสดงผลลัพธ์ในลำดับเดียวกัน -

<ก่อนหน้า>+---------+| เบอร์ |+-------+| 30 || 19 || 34 || 25 || 28 || 29 || 24 |+-------+7 แถวในชุด (0.00 วินาที)