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

MySQL: นับค่าทั้งหมดจาก 2 คอลัมน์ และไม่นับค่า NULL

สร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable1975 ( StudentName varchar(20), StudentMarks int );
mysql> insert into DemoTable1975 values('John',45);
mysql> insert into DemoTable1975 values('Chris',67);
mysql> insert into DemoTable1975 values('David',59);
mysql> insert into DemoTable1975 values('Bob',NULL);

ข้อมูลในตาราง

+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John        | 45           |
| Chris       | 67           |
| David       | 59           |
| Bob         | NULL         |
+-------------+--------------+

Query นับค่าที่ไม่เป็น NULL

ฟังก์ชัน COUNT(column) จะนับเฉพาะแถวที่คอลัมน์นั้นไม่เป็น NULL:

mysql> select count(StudentName)+count(StudentMarks) from DemoTable1975;

ผลลัพธ์

+----------------------------------------+
| count(StudentName)+count(StudentMarks) |
+----------------------------------------+
| 7                                      |
+----------------------------------------+

การคำนวณ

  • COUNT(StudentName) = 4 (ทุกแถวมีชื่อ)
  • COUNT(StudentMarks) = 3 (แถว Bob เป็น NULL ไม่นับ)
  • รวม = 4 + 3 = 7

ข้อมูลเพิ่มเติม

  • COUNT(*) จะนับทุกแถวรวมถึง NULL
  • COUNT(DISTINCT column) นับค่าที่ไม่ซ้ำกันและไม่เป็น NULL
  • หากต้องการนับเฉพาะแถวที่ทั้งสองคอลัมน์ไม่เป็น NULL ให้ใช้ COUNT(*) WHERE StudentName IS NOT NULL AND StudentMarks IS NOT NULL