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

จะเลือกผลรวมหรือ 0 ได้อย่างไรหากไม่มีบันทึกใน MySQL


คุณสามารถใช้ฟังก์ชันรวม sum() ภายใน COALESCE() ไวยากรณ์ด้านล่างจะคืนค่าผลรวมของทั้งหมด ถ้าเร็กคอร์ดมีอยู่ มิฉะนั้น 0 จะถูกส่งกลับ ไวยากรณ์มีดังนี้

เลือก COALESCE(sum(yourColumnName2), 0) AS anyVariableName from yourTableName โดยที่ yourColumnName1 ชอบ '%yourValue%';

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

mysql> สร้างตาราง SumDemo-> (-> Words varchar(100),-> Counter int-> );ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.93 วินาที)

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

mysql> แทรกลงในค่า SumDemo ('Are You There', 10); Query OK, 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงในค่า SumDemo ('Are You Not There', 15); Query OK, 1 แถวที่ได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า SumDemo ('สวัสดีนี่คือ MySQL',12); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.09 วินาที) mysql> แทรกลงในค่า SumDemo ('สวัสดีนี่ไม่ใช่ MySQL', 14);แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.24 วินาที)

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

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

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

<ก่อนหน้า>+-------------------------+---------+| คำ | เคาน์เตอร์ |+-----------------------------------+---------+| เธออยู่ไหม | 10 || ไม่มีเธอแล้วหรอ | 15 || สวัสดี นี่คือ MySQL | 12 || สวัสดี นี่ไม่ใช่ MySQL | 14 |+-----------------------------------+---------+4 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามที่ให้ผลรวมทั้งหมดเมื่อใดก็ตามที่มีบันทึก

mysql> เลือก COALESCE(sum(Counter), 0) AS SumOfAll จาก SumDemo โดยที่ Words เช่น '%hello%';

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

<ก่อนหน้า>+----------+| SumOfAll |+----------+| 26 |+----------+1 แถวในชุด (0.00 วินาที)

หากไม่มีบันทึก คุณจะได้รับ 0 การสืบค้นมีดังต่อไปนี้

mysql> เลือก COALESCE(sum(Counter), 0) AS SumOfAll จาก SumDemo โดยที่ Words เช่น '%End of MySQL%';

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

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