คำสั่งหลัก
ใช้ DISTINCT กำหนดให้คืนค่าเฉพาะค่าที่ไม่ซ้ำกัน
รูปแบบคำสั่ง
SELECT DISTINCT yourColumnName FROM yourTableName;
ตัวอย่างครบถ้วน
1. สร้างตาราง
mysql> create table selectUniqueValue
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(20),
-> Age int
-> );
Query OK, 0 rows affected (0.64 sec)
2. เพิ่มข้อมูล (อายุซ้ำหลายคน)
mysql> insert into selectUniqueValue(Name,Age) values('John',21);
Query OK, 1 row affected (0.18 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Carol',21);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Sam',22);
Query OK, 1 row affected (0.10 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Mike',22);
Query OK, 1 row affected (0.16 sec)
mysql> insert into selectUniqueValue(Name,Age) values('David',22);
Query OK, 1 row affected (0.13 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Bob',23);
Query OK, 1 row affected (0.12 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Maxwell',22);
Query OK, 1 row affected (0.19 sec)
mysql> insert into selectUniqueValue(Name,Age) values('Robert',21);
Query OK, 1 row affected (0.15 sec)
3. ดูข้อมูลทั้งหมด (9 แถว)
mysql> select * from selectUniqueValue;
+----+---------+------+ | Id | Name | Age | +----+---------+------+ | 1 | John | 21 | | 2 | Carol | 21 | | 3 | Sam | 22 | | 4 | Mike | 22 | | 5 | David | 22 | | 6 | Larry | 23 | | 7 | Bob | 23 | | 8 | Maxwell | 22 | | 9 | Robert | 21 | +----+---------+------+
4. SELECT DISTINCT อายุ
mysql> select distinct Age from selectUniqueValue;
+------+ | Age | +------+ | 21 | | 22 | | 23 | +------+
DISTINCT หลายคอลัมน์ (Composite Distinct)
SELECT DISTINCT Name, Age FROM selectUniqueValue;
จะคืนค่าคู่ (Name, Age) ที่ไม่ซ้ำกันทั้งคู่
นับจำนวนค่าที่ไม่ซ้ำ
SELECT COUNT(DISTINCT Age) FROM selectUniqueValue; -- → 3
DISTINCT vs GROUP BY
| DISTINCT | GROUP BY |
|---|---|
| Syntax เรียบง่าย | รองรับ aggregate functions |
| เหมาะสำหรับ distinct values เท่านั้น | เหมาะสำหรับ grouping + aggregation |
| ไม่สั่งลำดับได้ (ต้อง ORDER BY แยก) | มี implied ordering ในบาง version |
สรุป: ใช้ DISTINCT สำหรับ distinct values แบบง่าย ใช้ GROUP BY เมื่อต้อง aggregate ด้วย