Truy vấn MySQL group theo nhiều cột hoặc nhiều cặp – “fields cột” có giá trị tương đương

0
778

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.

truy vấn MySQL Group theo nhiều cặp fields

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:

truy vấn MySQL Group nhiều trường fields

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

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây

34 − = 25