บางครั้งการเรียงลำดับจาก MySQL ก็ไม่ได้ดั่งใจเราสักเท่าไหร่ บทความนี้ถูกรวบรวมมาจากปัญหาที่ผมได้พบเจอจากการทำงานเกี่ยวกับการเรียงลำดับ เชิญรับชมกันเลยครับ
เรียงลำดับตัวเลขให้ถูกต้อง
ถ้าท่านมีข้อมูลตัวเลขที่ต้องการเรียงลำดับ เช่น 1, 2, 3, …., 9, 10, 11 แต่ผลลัพธ์การเรียงข้อมูลใน MySQL กลับเรียงเป็น 1, 10, 11, 2, 3, 4… สาเหตุเป็นเพราะ field นั้นถูกกำหนดในโครงสร้างตารางให้ field นั้นเป็นชนิดตัวอักษร เช่น varchar แต่ถ้าเป็นชนิดตัวเลข เช่น int ปัญหานี้จะไม่เกิดขึ้น
หลักการแก้ไขปัญหา คือ
- เพิ่มเลข 0 เข้าไปที่ตัวเลขหลักเดียว เช่น 1 จะกลายเป็น 01
- ตั้งชื่อให้ เช่น new_order
- เรียงลำดับจาก new_order
SELECT *, IF(LENGTH(q_order) = 1, CONCAT('0', q_order), q_order) as new_order
FROM question_choice ORDER BY new_order
เรียงลำดับตามตัวอักษร (ภาษาไทย)
ในกรณีที่ข้อมูลมีสระนำหน้าและโครงสร้างตารางถูกกำหนดให้เป็น utf8 จะเกิดปัญาหา คือ เมื่อมีการเรียงข้อมูล แถวที่มีสระนำหน้าจะถูกเอาไว้ตำแหน่งหลัง
หลักการแก้ไขปัญหา คือ แปลง field ที่ต้องการเรียงข้อมูล (ในที่นี้คือ first_name) ให้เป็น tis-620
SELECT * FROM employee ORDER BY CONVERT(first_name USING tis620) ASC
ขั้นตอนการติดตั้ง Vuetify ใน Laravel
3 เทคนิค เพิ่มความเร็วใน Laravel
ฟังก์ชันวันเวลาที่น่าสนใจใน MySQL
เคล็ดลับการเรียงลำดับข้อมูลใน MySQL
เชื่อมตารางตัวเองใน MySQL ด้วย SELF JOIN
เคล็ดลับเพิ่มประสิทธิภาพการใช้ Google Docs
เทคนิคการใช้ ChatGPT Plus ให้คุ้มค่า คุ้มราคา
เชื่อมหลายฐานข้อมูล MySQL ใน Codeigniter4