ได้ครับ - ใช้ COUNT(DISTINCT column) เพื่อนับเฉพาะค่าที่ไม่ซ้ำกัน
ไวยากรณ์
SELECT COUNT(DISTINCT yourColumnName) AS uniqueCount FROM yourTableName;
ตัวอย่างการใช้งาน
สร้างตาราง CountDistinctDemo:
mysql> CREATE TABLE CountDistinctDemo (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(20),
-> PRIMARY KEY(Id)
-> );
เพิ่มข้อมูล (มีชื่อซ้ำหลายครั้ง):
mysql> INSERT INTO CountDistinctDemo(Name) VALUES('Carol'),('Bob'),('Carol'),('John'),('Bob'),('Carol'),('John'),('Sam'),('Mike'),('Carol'),('David');
ข้อมูลทั้งหมด (11 แถว)
+----+-------+ | Id | Name | +----+-------+ | 1 | Carol | | 2 | Bob | | 3 | Carol | | 4 | John | | 5 | Bob | | 6 | Carol | | 7 | John | | 8 | Sam | | 9 | Mike | | 10 | Carol | | 11 | David | +----+-------+
❌ COUNT() ธรรมดา (นับทุกแถว)
mysql> SELECT COUNT(Name) AS TotalName FROM CountDistinctDemo;
+-----------+ | TotalName | +-----------+ | 11 | +-----------+
✅ COUNT(DISTINCT) (นับค่าที่ไม่ซ้ำ)
mysql> SELECT COUNT(DISTINCT Name) AS UniqueName FROM CountDistinctDemo;
+------------+ | UniqueName | +------------+ | 6 | +------------+
สรุป: มีชื่อไม่ซ้ำ 6 ชื่อ (Carol, Bob, John, Sam, Mike, David) จากทั้งหมด 11 แถว