Hàm GROUP_CONCAT trong MySQL
Hàm GROUP_CONCAT() trong MySQL được sử dụng để nối nhiều giá trị của các record trong column với nhau thành một chuỗi. Hàm GROUP_CONCAT() rất là hữu dụng cho việc tìm kiếm nhiều records dữ liệu, sau đó trả về một chuỗi. Mô tả tình huống: Giả sử chúng ta có bảng Product với dữ liệu như sau: ...
Hàm GROUP_CONCAT() trong MySQL được sử dụng để nối nhiều giá trị của các record trong column với nhau thành một chuỗi. Hàm GROUP_CONCAT() rất là hữu dụng cho việc tìm kiếm nhiều records dữ liệu, sau đó trả về một chuỗi.
Mô tả tình huống:
Giả sử chúng ta có bảng Product với dữ liệu như sau:
Id | Name | Price | Description |
1 |
Laptop | 14,000,000 | ASUS |
2 |
Iphone 4s | 17,000,000 | Apple |
3 |
Tivi TOSHIBA | 6,300,000 | 32 inches |
Áp dụng hàm GROUP_CONCAT() như sau:
Trường hợp 1: lấy tất cả record của cột Name và cộng chúng lại với nhau trả về một chuỗi, các record cách nhau bởi dấu phẩy
SELECT GROUP_CONCAT(NAME) FROM Product
Kết quả trả về:
Laptop,Iphone 4s,Tivi TOSHIBA
Trường hợp 2: giống như trường hợp 1 nhưng các record được sắp sếp theo thứ tự tăng dần
SELECT GROUP_CONCAT(NAME ORDER BY NAME) FROM Product
Kết quả trả về:
Iphone 4s,Laptop,Tivi TOSHIBA
Trường hợp 3: giống như trường hợp 2 nhưng các record được sắp sếp theo thứ tự giảm dần
SELECT GROUP_CONCAT(NAME ORDER BY NAME DESC) FROM Product
Kết quả trả về:
Tivi TOSHIBA,Laptop,Iphone 4s
Trường hợp 4: bạn không muốn dùng dấu phẩy (,) giữa các record nữa, bạn có thể thay bất cứ ký tự nào khác
SELECT GROUP_CONCAT(NAME SEPARATOR '-') FROM Product
Kết quả trả về:
Laptop-Iphone 4s-Tivi TOSHIBA
Ngoài ra, trong trường hợp giá trị các record trùng nhau, bạn có thể dùng DISTINCT để bỏ qua những record trùng nhau, ví dụ như bên dưới:
SELECT GROUP_CONCAT(DISTINCT NAME) FROM Product
Như các bạn thấy kết quả dữ liệu của các trường hợp ở trên, kết quả các record của cột Name trả về cách nhau bởi dấu phẩy. Chúng ta nhìn thấy kết quả dính liền lại với nhau. Chúng ta mong muốn đặt một khoảng trắng vào phía sau dấu phẩy để dữ liệu chúng ta rõ ràng dễ đọc hơn. Chúng ta làm như sau:
SELECT GROUP_CONCAT(NAME SEPARATOR ', ') FROM Product
Kết quả như sau:
Laptop, Iphone 4s, Tivi TOSHIBA
Chú ý: hàm GROUP_CONCAT() bỏ qua những giá trị null.
Như các bạn thấy đấy hàm này rất hữu dụng và rất dễ thực hành.
Góc Kinh Nghiệm chúc các bạn thành công!