คุณสามารถบรรลุสิ่งนี้ได้ด้วยความช่วยเหลือของประโยค GROUP BY HAVING ไวยากรณ์มีดังนี้ −
เลือก yourColumnName1, SUM(yourCoumnName2) จาก yourTableName GROUP BY yourColumnName1HAVING COUNT(yourCoumnName2) =COUNT(*);
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้ −
mysql> สร้างตาราง SumDemo -> ( -> Id int, -> Amount int -> );Query OK, 0 แถวได้รับผลกระทบ (0.58 วินาที)
แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้ −
mysql> แทรกลงในค่า SumDemo (1,200) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.22 วินาที) mysql> แทรกลงในค่า SumDemo (2,100) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.19 วินาที) mysql> แทรกลงในค่า SumDemo ( 2,NULL);ตกลง แบบสอบถาม 1 แถวได้รับผลกระทบ (0.14 วินาที)mysql> แทรกลงในค่า SumDemo (1,300); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงในค่า SumDemo (2,100); แบบสอบถามตกลง 1 แถว ได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า SumDemo (1,500) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้ −
mysql> เลือก *จาก SumDemo;
ผลลัพธ์
<ก่อนหน้า>+------+---------+| รหัส | จำนวน |+------+---------+| 1 | 200 || 2 | 100 || 2 | NULL || 1 | 300 || 2 | 100 || 1 | 500 |+------+-------+6 แถวในชุด (0.00 วินาที)นี่คือการสืบค้นเพื่อรับผลรวมหากแถวทั้งหมดไม่เป็นค่าว่าง มิฉะนั้นจะคืนค่าเป็นค่าว่าง แบบสอบถามมีดังนี้ −
mysql> เลือก Id, -> SUM(Amount) -> จาก SumDemo -> GROUP BY ID -> HAVING COUNT(Amount) =COUNT(*);
ต่อไปนี้เป็นผลลัพธ์ เนื่องจาก id 2 เป็น NULL จะไม่มีการเพิ่มค่าใดๆ ลงในผลรวม
ดังนั้น ค่าทั้งหมดของ Id 1 จะถูกเพิ่มเข้าไป เช่น 200 + 300 + 500 =1,000 ดังแสดงด้านล่าง −
<ก่อนหน้า>+------+-------------+| รหัส | SUM(Amount) |+------+-------------+| 1 | 1000 |+------+-------------+1 แถวในชุด (0.09 วินาที)