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

ORDER BY ตัวอักษรก่อนแล้วตามด้วยตัวเลขใน MySQL?


คุณต้องใช้นิพจน์ทั่วไปกับคำสั่งย่อย ORDER BY ไวยากรณ์มีดังนี้:

เลือก *จาก yourTableNameORDER BY IF(yourColumnName RLIKE '^[a-z]', 1, 2),yourColumnName;

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

mysql> สร้างตาราง AlphabetFirstThatNumberDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> Name varchar(20), -> PRIMARY KEY(Id) -> );Query OK, 0 แถวได้รับผลกระทบ (0.95 วินาที) 

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

mysql> แทรกลงในค่า AlphabetFirstThatNumberDemo (ชื่อ) ('John'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.37 วินาที) mysql> แทรกลงในค่า AlphabetFirstThatNumberDemo (ชื่อ) ('Bob'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.21 วินาที) mysql> แทรกลงในค่า AlphabetFirstThatNumberDemo (ชื่อ) ('1Sam'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า AlphabetFirst จากนั้นNumberDemo (ชื่อ) ('Carol'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.22 วินาที) mysql> แทรกลงในค่า AlphabetFirstThatNumberDemo (ชื่อ) ('2Larry'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.31 วินาที) mysql> แทรกลงในค่า AlphabetFirst จากนั้นNumberDemo (ชื่อ) ('David'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.27 วินาที) mysql> แทรกลงในค่า AlphabetFirstThatNumberDemo (ชื่อ) ('3Mike'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า AlphabetFirst จากนั้นNumberDemo (ชื่อ) ('Robert'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.10 วินาที)

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

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

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

<ก่อนหน้า>+----+---------+| รหัส | ชื่อ |+----+--------+| 1 | จอห์น || 2 | บ๊อบ || 3 | 1แซม || 4 | แครอล || 5 | 2ลาร์รี่ || 6 | เดวิด || 7 | 3ไมค์ || 8 | Robert |+----+-------+8 แถวในชุด (0.00 วินาที)

นี่คือลำดับการสืบค้นตามตัวอักษรก่อนแล้วตามด้วยตัวเลข แบบสอบถามมีดังนี้:

mysql> เลือก *จาก AlphabetFirstThatNumberDemo -> ORDER BY IF(Name RLIKE '^[a-z]', 1, 2),Name;

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

<ก่อนหน้า>+----+---------+| รหัส | ชื่อ |+----+--------+| 2 | บ๊อบ || 4 | แครอล || 6 | เดวิด || 1 | จอห์น || 8 | โรเบิร์ต || 3 | 1แซม || 5 | 2ลาร์รี่ || 7 | 3Mike |+----+-------+8 แถวในชุด (0.00 วินาที)