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

SELECT DISTINCT vs GROUP BY ใน MySQL


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