ในการเลือกคอลัมน์ผลรวมหลายคอลัมน์ด้วยแบบสอบถาม MySQL และแสดงในคอลัมน์แยกกัน คุณต้องใช้คำสั่ง CASE ไวยากรณ์มีดังนี้:
SELECTSUM( CASE WHEN yourColumnName1='yourValue1' THEN yourColumnName2 END ) AS yourSeparateColumnName1,SUM( CASE WHEN yourColumnName1='yourValue2' THEN yourColumnName2 END ) AS yourSeparateColumnName2, SUM2 ของคุณ ชื่อคอลัมน์ของคุณ'SUM(Vn) ,...NFROM yourTableName;
เพื่อให้เข้าใจไวยากรณ์ข้างต้น ให้เราสร้างตาราง แบบสอบถามเพื่อสร้างตารางมีดังนี้:
mysql> สร้างตาราง selectMultipleSumDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT, -> PlayerName varchar(20), -> PlayerScore int, -> PRIMARY KEY(Id) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ ( 0.58 วินาที)
ตอนนี้คุณสามารถแทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังนี้:
mysql> แทรกลงในค่า selectMultipleSumDemo (PlayerName, PlayerScore) ('Maxwell', 89); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.23 วินาที) mysql> แทรกลงในค่า selectMultipleSumDemo (PlayerName, PlayerScore) ('Ricky', 98);แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า selectMultipleSumDemo (PlayerName, PlayerScore) ('Maxwell', 96); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.18 วินาที) mysql> แทรกลงใน selectMultipleSumDemo (PlayerName, PlayerScore) ค่า ('Ricky',78); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที) mysql> แทรกลงใน selectMultipleSumDemo (PlayerName, PlayerScore) ค่า ('Maxwell',51); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.17 วินาที) mysql> แทรกลงในค่า selectMultipleSumDemo(PlayerName, PlayerScore) ('Ricky',89); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงใน selectMultipleSumDemo (PlayerName, PlayerScore) ค่า ('David',56); แบบสอบถามตกลง 1 แถวที่ได้รับผลกระทบ (0.15 วินาที) mysql> แทรกลงในค่า selectMultipleSumDemo (PlayerName, PlayerScore) ('David',65); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.19 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังนี้:
mysql> เลือก *จาก selectMultipleSumDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+----+-----------+-------------+| รหัส | ชื่อผู้เล่น | PlayerScore |+----+-----------+-----------+| 1 | แม็กซ์เวลล์ | 89 || 2 | ริกกี้ | 98 || 3 | แม็กซ์เวลล์ | 96 || 4 | ริกกี้ | 78 || 5 | แม็กซ์เวลล์ | 51 || 6 | ริกกี้ | 89 || 7 | เดวิด | 56 || 8 | เดวิด | 65 |+----+-----------+-------------+8 แถวในชุด (0.00 วินาที)แบบสอบถามเพื่อรับคอลัมน์แยกต่างหากที่มีผลรวมหลายรายการ:
mysql> เลือก -> SUM (กรณีที่ PlayerName='Maxwell' แล้ว PlayerScore END) เป็น 'MAXWELL TOTAL SCORE' -> SUM (กรณีที่ PlayerName='Ricky' แล้ว PlayerScore END) เป็น 'RICKY TOTAL SCORE' -> SUM (กรณีที่ PlayerName ='David' จากนั้น PlayerScore END) เป็น 'DAVID TOTAL SCORE' -> จาก selectMultipleSumDemo;
ต่อไปนี้เป็นผลลัพธ์:
<ก่อนหน้า>+---------------------+-------------------+---- ---------------+| MAXWELL คะแนนรวม | คะแนนรวม RICKY | คะแนนรวมของเดวิด |+---------------------+-------------------+--- -----------------+| 236 | 265 | 121 |+--------------------------+-------------------+----------- --------------+1 แถวในชุด (0.00 วินาที)