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

MySQL สั่งซื้อด้วยกรณี?


สำหรับสิ่งนี้ ใช้คำสั่งโดย nullif() ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable672( CustomerId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, CustomerName varchar(100), CustomerAmount int); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.81 วินาที)

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

mysql> แทรกลงในค่า DemoTable672(CustomerName,CustomerAmount) ('Chris',560) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.51 วินาที)mysql> แทรกลงในค่า DemoTable672 (CustomerName, CustomerAmount) ('Robert', null);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที)mysql> แทรกลงในค่า DemoTable672 (ชื่อลูกค้า CustomerAmount) ('', 450); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DemoTable672 (CustomerName, CustomerAmount) ('David',456) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่า DemoTable672 (CustomerName, CustomerAmount) ('Carol',786); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.14 วินาที)

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

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

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

<ก่อนหน้า>+-----------+--------------+----------------+| รหัสลูกค้า | ชื่อลูกค้า | จำนวนลูกค้า |+-----------+--------------+----------------+| 1 | คริส | 560 || 2 | โรเบิร์ต | NULL || 3 | | 450 || 4 | เดวิด | 456 || 5 | แครอล | 786 |+-----------+--------------+----------------+5 แถว ในชุด (0.00 วินาที)

ต่อไปนี้เป็นวิธีที่คุณสามารถดำเนินการสั่งซื้อ MySQL แยกตามกรณี ที่นี่ เรายังใช้ FIELD() สำหรับการค้นหาแบบไม่คำนึงถึงตัวพิมพ์เล็ก-ใหญ่ -

mysql> เลือก *จาก DemoTable672 ORDER BY NULLIF(CustomerName,'') IS NULL, FIELD(CustomerAmount,560,786,450,456);

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

<ก่อนหน้า>+-----------+--------------+----------------+| รหัสลูกค้า | ชื่อลูกค้า | จำนวนลูกค้า |+-----------+--------------+----------------+| 2 | โรเบิร์ต | NULL || 1 | คริส | 560 || 5 | แครอล | 786 || 4 | เดวิด | 456 || 3 | | 450 |+-----------+-------------+----------------+5 แถว ในชุด (0.04 วินาที)