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

จะหลีกเลี่ยงผลลัพธ์ที่เป็นโมฆะของ "SELECT max (rank) FROM test" สำหรับตารางว่างได้อย่างไร


คุณสามารถใช้ COALESCE() ร่วมกับฟังก์ชันรวม MAX() สำหรับสิ่งนี้ได้

ไวยากรณ์มีดังนี้

เลือก COALESCE(MAX(`yourColumnName`), 0) จาก yourTableName;

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

mysql> สร้างตารางหลีกเลี่ยงNullDemo -> ( -> `rank` int -> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.53 วินาที)

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

แบบสอบถามมีดังนี้

mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo (10); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo (NULL) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo ( 20); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo (NULL); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.11 วินาที) mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo (100); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ ( 0.11 วินาที) mysql> แทรกลงในค่าหลีกเลี่ยงNullDemo (NULL) แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.16 วินาที)

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

แบบสอบถามมีดังนี้

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

ต่อไปนี้เป็นผลลัพธ์ที่มีค่า NULL

<ก่อนหน้า>+------+| อันดับ |+------+| 10 || NULL || 20 || NULL || 100 || NULL |+------+6 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อหลีกเลี่ยงผลลัพธ์ที่เป็นโมฆะ

mysql> เลือก COALESCE(MAX(`rank`), 0) จากหลีกเลี่ยงNullDemo;

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

<ก่อนหน้า>+--------------------------+| COALESCE(MAX(`rank`), 0) |+--------------------------+| 100 |+--------------------------+1 แถวในชุด (0.00 วินาที)

นี่คือกรณีที่ตารางว่างเปล่า

ให้เราลบระเบียนทั้งหมดออกจากตารางด้านบน

แบบสอบถามมีดังนี้

mysql> ตัดทอนตาราง avoidNullDemo ตกลง สืบค้น 0 แถวได้รับผลกระทบ (0.92 วินาที)

ตอนนี้ตารางด้านบนว่างเปล่า ให้เราใช้แบบสอบถามข้างต้นสำหรับตารางว่าง

mysql> เลือก COALESCE(MAX(`rank`), 0) จากหลีกเลี่ยงNullDemo;

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

<ก่อนหน้า>+--------------------------+| COALESCE(MAX(`rank`), 0) |+--------------------------+| 0 |+--------------------------+1 แถวในชุด (0.00 วินาที)