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

นับเฉพาะค่าที่ไม่ใช่ NULL ด้วย COUNT(column) ใน MySQL

COUNT(ชื่อคอลัมน์) จะนับเฉพาะแถวที่คอลัมน์นั้น ไม่ใช่ NULL (ต่างจาก COUNT(*) ที่นับทุกแถว)

สร้างตารางและเพิ่มข้อมูล (มี NULL)

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    NumberOfQuestion INT,
    NumberOfSolution INT
);
mysql> INSERT INTO DemoTable(NumberOfQuestion, NumberOfSolution) VALUES
    (20, 10), (20, 2), (20, NULL), (20, NULL), (30, 19), (30, 1);

ดูข้อมูล

mysql> SELECT * FROM DemoTable;
+----+------------------+------------------+
| Id | NumberOfQuestion | NumberOfSolution |
+----+------------------+------------------+
|  1 |               20 |               10 |
|  2 |               20 |                2 |
|  3 |               20 |             NULL |
|  4 |               20 |             NULL |
|  5 |               30 |               19 |
|  6 |               30 |                1 |
+----+------------------+------------------+

นับ NumberOfSolution ที่ไม่ใช่ NULL จำแนกตาม NumberOfQuestion

mysql> SELECT NumberOfQuestion, COUNT(NumberOfSolution) AS NumberOfRows
    -> FROM DemoTable
    -> GROUP BY NumberOfQuestion;

ผลลัพธ์

+------------------+--------------+
| NumberOfQuestion | NumberOfRows |
+------------------+--------------+
|               20 |            2 |
|               30 |            2 |
+------------------+--------------+

สังเกต: NumberOfQuestion=20 มี 4 แถว แต่ NumberOfSolution ไม่ใช่ NULL แค่ 2 แถว (แถวที่ 1,2)

เปรียบเทียบ: COUNT(*) จะได้ 4 และ 2 ตามลำดับ