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

ทำการนับหลายครั้งโดยไม่ต้องใช้ MySQL COUNT()?


ในการนับ คุณสามารถใช้ SUM() ร่วมกับคำสั่ง CASE สำหรับเงื่อนไข ให้เราสร้างตารางก่อน -

mysql> สร้างตาราง DemoTable1485 -> ( -> StudentId int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> StudentName varchar(20), -> StudentSubject varchar(20) -> ); แบบสอบถามตกลง 0 แถวได้รับผลกระทบ (0.72 วินาที) 

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

mysql> แทรกลงในค่า DemoTable1485(StudentName,StudentSubject) ('Chris', 'MySQL'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.12 วินาที)mysql> แทรกลงในค่า DemoTable1485 (StudentName,StudentSubject) ('Robert', 'MongoDB'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงในค่า DemoTable1485 (StudentName, StudentSubject) ('Robert', 'MongoDB'); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.21 วินาที) mysql> แทรกลงใน DemoTable1485 (StudentName,StudentSubject) ค่า ('Chris', 'Java'); แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.12 วินาที)

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

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

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+-----------+-------------+----------------+| รหัสนักศึกษา | ชื่อนักเรียน | StudentSubject |+-----------+-------------+----------------+| 1 | คริส | MySQL || 2 | โรเบิร์ต | MongoDB || 3 | โรเบิร์ต | MongoDB || 4 | คริส | Java |+-----------+-------------+----------------+4 แถวในชุด (0.00 วินาที)

นี่คือแบบสอบถามเพื่อดำเนินการนับหลายครั้งโดยไม่ต้องใช้เมธอด COUNT() -

mysql> เลือก StudentSubject, -> sum (กรณีที่ StudentName ='Chris' แล้ว 1 ELSE 0 END) Chris_Count, -> sum (กรณีที่ StudentName ='Robert' แล้ว 1 ELSE 0 END) Robert_Count -> จาก DemoTable1485 -> กลุ่มตาม StudentSubject;

สิ่งนี้จะสร้างผลลัพธ์ต่อไปนี้ -

<ก่อนหน้า>+----------+-------------+--------------+ | นักศึกษาหัวเรื่อง | Chris_Count | Robert_Count |+----------+-------------+-------------+| MySQL | 1 | 0 || MongoDB | 0 | 2 || ชวา | 1 | 0 |+----------+-------------+-------------+3 แถวในชุด (0.00 วินาที)