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

นับค่าที่ไม่ซ้ำกัน (DISTINCT) ใน MySQL ด้วย COUNT(DISTINCT)


ไวยากรณ์นับค่า 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)