ใช้คีย์เวิร์ด DISTINCT เพื่อเลือกค่าที่ไม่ซ้ำกันจากคอลัมน์
ไวยากรณ์
SELECT DISTINCT yourColumnName FROM yourTableName;
สร้างตารางตัวอย่าง
mysql> CREATE TABLE displayOnlyDistinctValue (
-> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> UserName VARCHAR(100),
-> UserAge INT
-> );
เพิ่มข้อมูลตัวอย่าง (มีค่าซ้ำ)
mysql> INSERT INTO displayOnlyDistinctValue(UserName, UserAge) VALUES
('Larry', 23), ('Mike', 23), ('Larry', 21), ('Sam', 23), ('Carol', 25),
('Sam', 26), ('Sam', 27), ('Bob', 22), ('Larry', 22);
แสดงข้อมูลทั้งหมด (9 แถว)
mysql> SELECT * FROM displayOnlyDistinctValue;
ผลลัพธ์:
+--------+----------+---------+ | UserId | UserName | UserAge | +--------+----------+---------+ | 1 | Larry | 23 | | 2 | Mike | 23 | | 3 | Larry | 21 | | 4 | Sam | 23 | | 5 | Carol | 25 | | 6 | Sam | 26 | | 7 | Sam | 27 | | 8 | Bob | 22 | | 9 | Larry | 22 | +--------+----------+---------+
กรณีที่ 1: DISTINCT บน UserName
mysql> SELECT DISTINCT UserName FROM displayOnlyDistinctValue;
ผลลัพธ์ (5 ค่า):
+----------+ | UserName | +----------+ | Larry | | Mike | | Sam | | Carol | | Bob | +----------+
กรณีที่ 2: DISTINCT บน UserAge
mysql> SELECT DISTINCT UserAge FROM displayOnlyDistinctValue;
ผลลัพธ์ (6 ค่า):
+---------+ | UserAge | +---------+ | 23 | | 21 | | 25 | | 26 | | 27 | | 22 | +---------+
DISTINCT หลายคอลัมน์
SELECT DISTINCT UserName, UserAge FROM displayOnlyDistinctValue;
จะคืนค่าคู่ (UserName, UserAge) ที่ไม่ซ้ำกัน
นับค่าที่ไม่ซ้ำ
SELECT COUNT(DISTINCT UserName) FROM displayOnlyDistinctValue; -- 5 SELECT COUNT(DISTINCT UserAge) FROM displayOnlyDistinctValue; -- 6
ข้อควรระวัง
DISTINCTทำงานหลังWHEREก่อนORDER BY- อาจช้าในตารางใหญ่ เนื่องจากต้องเรียงลำดับเพื่อหาค่าซ้ำ
- ใช้ index บนคอลัมน์ที่ DISTINCT เพื่อเพิ่มประสิทธิภาพ