SELECT DISTINCT
ใช้เพื่อคืนค่าที่ไม่ซ้ำกัน (Distinct values) ลบแถวซ้ำ ใช้กับคอลัมน์เดียวหรือหลายคอลัมน์ ร่วมกับ Aggregate functions ได้ (MAX, AVG, ฯลฯ)
ตัวอย่าง: ตาราง DistinctDemo มีข้อมูลซ้ำ John, Bob
mysql> SELECT DISTINCT name FROM DistinctDemo; +-------+ | name | +-------+ | John | | Bob | | David | +-------+
GROUP BY
จัดกลุ่มข้อมูลตามคอลัมน์ที่ระบุ ใช้ร่วม Aggregate functions (SUM, AVG, COUNT, ฯลฯ) ได้ หลายคอลัมน์
ตัวอย่าง: ตาราง GroupDemo1 มีคอลัมน์ address
mysql> SELECT address, COUNT(*) FROM GroupDemo1 GROUP BY address; +---------+----------+ | address | COUNT(*) | +---------+----------+ | US | 3 | | UK | 1 | +---------+----------+
ความแตกต่างสำคัญ
- DISTINCT: กรองแถวซ้ำ ใช้ง่ายสำหรับคอลัมน์เดียว
- GROUP BY: จัดกลุ่มเพื่อสรุปข้อมูล (Aggregation) ใช้กับหลายคอลัมน์และ Aggregate functions
- ประสิทธิภาพ: ในบางกรณี GROUP BY เร็วกว่า DISTINCT หากมี Index