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

MySQL ORDER BY พร้อมค่าฟิลด์ที่กำหนดเอง


ในการตั้งค่าฟิลด์ที่กำหนดเอง ให้ใช้ FIND_IN_SET() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable677 ( UserId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, ข้อความ UserStatus); ตกลง ตกลง 0 แถวได้รับผลกระทบ (1.07 วินาที)

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

mysql> แทรกลงในค่า DemoTable677(UserStatus) ('BUSY'); เคียวรีตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที)mysql> แทรกลงในค่า DemoTable677 (UserStatus) ('AT WORK'); เคียวรีตกลง ได้รับผลกระทบ 1 แถว (0.17 วินาที) mysql> แทรกลงในค่า DemoTable677 (UserStatus) ('ออฟไลน์'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DemoTable677 (UserStatus) ('BLOCKED'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.17 วินาที)

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

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

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

<ก่อนหน้า>+---------+-----------+| รหัสผู้ใช้ | UserStatus |+---------+-----------+| 1 | ไม่ว่าง || 2 | ที่ทำงาน || 3 | ออฟไลน์ || 4 | บล็อก |+-------+-----------+4 แถวในชุด (0.00 วินาที)

ต่อไปนี้เป็นแบบสอบถามเพื่อ ORDER BY ด้วยค่าฟิลด์ที่กำหนดเอง -

mysql> เลือก *จาก DemoTable677 ORDER BY FIND_IN_SET(UserStatus, 'BLOCKED, AT WORK, OFFLINE, BUSY');

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

<ก่อนหน้า>+---------+-----------+| รหัสผู้ใช้ | UserStatus |+---------+-----------+| 4 | ถูกบล็อก || 2 | ที่ทำงาน || 3 | ออฟไลน์ || 1 | BUSY |+---------+-----------+4 แถวในชุด (0.03 วินาที)