Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

SELECT DISTINCT vs GROUP BY trong MySQL

Cả hai đều dùng để loại bỏ trùng lặp nhưng có mục đích và khả năng khác nhau.

SELECT DISTINCT

  • Trả về các giá trị duy nhất của một hoặc nhiều cột.
  • Có thể dùng với hàm tập hợp (MAX, AVG...).
  • Thường áp dụng trên một cột.

Ví dụ DISTINCT

mysql> CREATE TABLE DistinctDemo (id INT, name VARCHAR(100));
mysql> INSERT INTO DistinctDemo VALUES(1,'John'),(2,'John'),(3,'Bob'),(4,'John'),(5,'David'),(6,'Bob');

mysql> SELECT DISTINCT name FROM DistinctDemo;
+-------+
| name  |
+-------+
| John  |
| Bob   |
| David |
+-------+

GROUP BY

  • Nhóm các hàng theo một hoặc nhiều cột.
  • Thường dùng kèm hàm tập hợp (COUNT, SUM, AVG...) để tính toán trên mỗi nhóm.
  • Có thể chọn nhiều cột (cột nhóm + hàm tập hợp).

Ví dụ GROUP BY

mysql> CREATE TABLE GroupDemo1 (id INT, name VARCHAR(100), address VARCHAR(100));
mysql> INSERT INTO GroupDemo1 VALUES(1,'John','US'),(2,'Bob','UK'),(3,'David','US'),(4,'David','US');

mysql> SELECT address, COUNT(*) FROM GroupDemo1 GROUP BY address;
+---------+----------+
| address | COUNT(*) |
+---------+----------+
| US      | 3        |
| UK      | 1        |
+---------+----------+

Tóm tắt khác biệt

Đặc điểmSELECT DISTINCTGROUP BY
Mục đích chínhLoại bỏ hàng trùng lặpNhóm dữ liệu để tính toán
Hàm tập hợpCó thể dùng nhưng hiếmThường bắt buộc dùng
Số cột kết quảChỉ các cột DISTINCTCột nhóm + hàm tập hợp
Sắp xếpKhông đảm bảo thứ tựThường sắp xếp theo cột nhóm

Chọn DISTINCT khi chỉ cần danh sách giá trị duy nhất. Chọn GROUP BY khi cần thống kê, tính toán trên từng nhóm.