Thông thường khi truy vấn cở sở dữ liệu MySQL nếu xuất hiện các dòng có nhiều ID giống nhau chúng ta sẽ phát biểu GROUP ID là OK.
SELECT * FROM chat AS a GROUP BY a.id
Ví dụ: Bài toán dữ liệu chat nhiều thành viên với nhau. Làm sao truy vấn để biết có bao nhiêu cặp chat với nhau
id | user_from | user_to | title |
1 | 1 | 2 | title 1.1 |
2 | 2 | 1 | title 1.2 |
3 | 1 | 2 | title 1.3 |
3 | 3 | 4 | title 2.1 |
4 | 4 | 3 | title 2.2 |
Nếu chung ta truy vấp & GROUP BY a.user_from, a.user_to // Dữ liệu xuất ra là 4 dòng.

Cách truy vấn trên không đạt yêu cầu bài toán đề ra “truy vấn như thế nào để dữ liệu trên chỉ xuất hiện 2 dòng – nghĩa là có 2 cặp chat với nhau”. id = 1,2,3 là 1 cặp, id = 3,4 là 1 căp
Truy vấn MYSQL group như thế nào đây? Các bạn xem truy vấn bên dưới:

SELECT
CASE WHEN a.user_from > a.user_to THEN a.user_from ELSE a.user_to END as aa
,CASE WHEN a.user_from > a.user_to THEN a.user_to ELSE a.user_from END as bb
, a.title
FROM chat AS a
GROUP BY aa, bb
Chúc các bạn thành công. Nếu có giải pháp nào tốt hơn đừng ngần ngại comments bên dưới để cùng trao đổi.
nhantam
Thiết kế web, Lập trình ứng dụng tại Panpic