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

วิธีการสั่งซื้อตามวันที่ใน MySQL แต่ใส่วันที่ว่างในตอนท้าย?


เรียงลำดับตามวันที่และตั้งค่าวันที่ว่างในช่วงสุดท้ายโดยใช้คำสั่ง ORDER BY และ IS NULL ไวยากรณ์มีดังนี้:

เลือก *จาก yourTableNameORDER BY (yourDateColumnName IS NULL), yourDateColumnName DESC;

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

mysql> สร้างตาราง DateColumnWithNullDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> วันที่เวลาล็อกอิน, -> คีย์หลัก (Id) -> ); เคียวรีตกลง 0 แถวได้รับผลกระทบ (0.84 วินาที)

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

mysql> แทรกลงในค่า DateColumnWithNullDemo(LoginDateTime) (date_add(now() ช่วงเวลา -1 ปี)); ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที)mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) (NULL); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.17 วินาที)mysql> แทรกลงในค่า DateColumnWithNullDemo(LoginDateTime) (NULL) ตกลง ตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงใน DateColumnWithNullDemo (LoginDateTime) ค่า (ตอนนี้ ()); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) (curdate()); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) ('2017-08-25 15:30:35');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) (NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) (' 2016-12-25 16:55:55 ');แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงใน DateColumnWithNullDemo (LoginDateTime) ค่า (NULL); แบบสอบถามตกลง 1 แถว ffected (0.22 วินาที) mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) ('2014-11-12 10:20:23'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.14 วินาที) mysql> แทรกลงในค่า DateColumnWithNullDemo (LoginDateTime) (' 2020-01-01 06:45:23');แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.23 วินาที)

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

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

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

<ก่อนหน้า>+----+---------------------+| รหัส | เข้าสู่ระบบวันที่เวลา |+----+---------------------+| 1 | 2018-01-29 17:07:20 || 2 | NULL || 3 | NULL || 4 | 2019-01-29 17:07:54 || 5 | 2019-01-29 00:00:00 || 6 | 2017-08-25 15:30:35 || 7 | NULL || 8 | 2016-12-25 16:55:55 || 9 | NULL || 10 | 2014-11-12 10:20:23 || 11 | 2020-01-01 06:45:23 |+----+---------------------+11 แถวในชุด (0.00 วินาที)

นี่คือการสืบค้นเพื่อตั้งค่า NULL สุดท้ายและเรียงลำดับวันที่จากมากไปหาน้อย:

mysql> เลือก *จาก DateColumnWithNullDemo -> สั่งซื้อโดย (LoginDateTime IS NULL), LoginDateTime DESC;

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

<ก่อนหน้า>+----+---------------------+| รหัส | เข้าสู่ระบบวันที่เวลา |+----+---------------------+| 11 | 2020-01-01 06:45:23 || 4 | 2019-01-29 17:07:54 || 5 | 2019-01-29 00:00:00 || 1 | 2018-01-29 17:07:20 || 6 | 2017-08-25 15:30:35 || 8 | 2016-12-25 16:55:55 || 10 | 2014-11-12 10:20:23 || 2 | NULL || 3 | NULL || 7 | NULL || 9 | NULL |+----+---------------------+11 แถวในชุด (0.00 วินาที)