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

นับจำนวนค่าที่ซ้ำกันในคอลัมน์เฉพาะด้วย COUNT() และ WHERE ใน MySQL

การนับจำนวนครั้งที่ค่าเฉพาะปรากฏในคอลัมน์

ใช้ COUNT(*) ร่วมกับเงื่อนไข WHERE column = 'value' เพื่อนับเฉพาะแถวที่มีค่าตรงกับที่ต้องการ

Syntax

SELECT COUNT(*) FROM table_name WHERE column_name = 'specific_value';

ตัวอย่างการใช้งาน

สร้างตารางและเพิ่มข้อมูล (มีชื่อ 'Chris' ซ้ำ 4 ครั้ง):

mysql> CREATE TABLE DemoTable (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (1.40 sec)

mysql> INSERT INTO DemoTable VALUES 
    (100, 'John'), (101, 'Chris'), (102, 'Chris'), (103, 'Chris'),
    (104, 'David'), (105, 'Chris'), (106, 'Carol'), (107, 'Bob');
Query OK, 8 rows affected

ข้อมูลทั้งหมด:

mysql> SELECT * FROM DemoTable;
+------+-------+
| Id   | Name  |
+------+-------+
| 100  | John  |
| 101  | Chris |
| 102  | Chris |
| 103  | Chris |
| 104  | David |
| 105  | Chris |
| 106  | Carol |
| 107  | Bob   |
+------+-------+
8 rows in set (0.00 sec)

นับจำนวน 'Chris':

mysql> SELECT COUNT(*) FROM DemoTable WHERE Name = 'Chris';
+----------+
| count(*) |
+----------+
| 4        |
+----------+
1 row in set (0.00 sec)

การขยาย: นับทุกค่าพร้อมกัน (Group By)

SELECT Name, COUNT(*) AS cnt FROM DemoTable GROUP BY Name ORDER BY cnt DESC;
+-------+-----+
| Name  | cnt |
+-------+-----+
| Chris | 4   |
| John  | 1   |
| David | 1   |
| Carol | 1   |
| Bob   | 1   |
+-------+-----+

เคล็ดลับ

  • ใช้ Index บนคอลัมน์ที่ถูก WHERE เพื่อความเร็ว
  • COUNT(*) นับแถวทั้งหมด, COUNT(column) นับเฉพาะค่าที่ไม่ใช่ NULL
  • สำหรับนับ Distinct: COUNT(DISTINCT column)