ไวยากรณ์นับค่า Distinct
ใช้ COUNT(DISTINCT column_name) เพื่อนับจำนวนค่าที่ไม่ซ้ำกัน:
SELECT COUNT(DISTINCT column_name) AS distinct_count
FROM your_table;
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูลซ้ำ
CREATE TABLE DistinctDemo (Name VARCHAR(200));
INSERT INTO DistinctDemo VALUES
('John'), ('Sam'), ('John'), ('Johnson'),
('John'), ('Johnson'), ('Sam'), ('Johnson');
ข้อมูลทั้งหมด (8 แถว มีค่าซ้ำ)
+---------+
| Name |
+---------+
| John |
| Sam |
| John |
| Johnson |
| John |
| Johnson |
| Sam |
| Johnson |
+---------+
คำสั่งนับค่าที่ไม่ซ้ำ
SELECT COUNT(DISTINCT Name) AS DistinctValues
FROM DistinctDemo;
ผลลัพธ์
+----------------+
| DistinctValues |
+----------------+
| 3 |
+----------------+
ค่าที่ไม่ซ้ำ: John, Sam, Johnson = 3 ค่า
นับ Distinct หลายคอลัมน์ (คู่ค่า)
SELECT COUNT(DISTINCT col1, col2) FROM your_table;
ใช้กับเงื่อนไข WHERE
SELECT COUNT(DISTINCT Name) FROM DistinctDemo WHERE Name LIKE 'J%';
-- ผลลัพธ์: 2 (John, Johnson)
ประสิทธิภาพ
- บนตารางใหญ่
COUNT(DISTINCT)อาจช้า เนื่องจากต้องสร้าง Temporary Table - พิจารณาเพิ่ม Index บนคอลัมน์ที่นับ
- MySQL 8.0+ มีการเพิ่มประสิทธิภาพสำหรับ COUNT(DISTINCT)