Nếu chúng ta có một cột duy nhất (hoặc tập hợp các cột) trong bảng, thì chúng ta có thể thêm một biểu thức khác vào GROUP BY
.
Biểu thức cần trả về một giá trị duy nhất cho mỗi hàng khi collection_id
là null. Nếu không, nó trả về một hằng số.
Giả sử chúng ta có một id
duy nhất trong bảng, thì chúng ta có thể làm như sau:
... GROUP BY collection_id, IF(collection_id IS NULL, id, 0)
Biểu thức thứ hai trong GROUP BY
trả về một giá trị không đổi 0
khi collection_id
không rỗng. Nhưng nó trả về một giá trị duy nhất cho mỗi hàng khi collection_id là null.
Lưu ý rằng id
đây chỉ là một tham chiếu đến một cột được xác định là duy nhất trong bảng. PRIMARY KEY là một ứng cử viên sáng giá. Nếu chúng ta không có chỉ mục duy nhất trên một cột, thì chúng ta có thể lặp lại cùng loại biểu thức này cho từng cột trong ràng buộc duy nhất của chúng ta hoặc cho bất kỳ tập hợp biểu thức nào được đảm bảo là duy nhất trên mỗi hàng.
... GROUP BY collection_id
, IF(collection_id IS NULL, col1, '')
, IF(collection_id IS NULL, col2, NULL)
, IF(collection_id IS NULL, col3, collection_id)
Ngoài ra, chúng ta có thể sử dụng một biểu thức tạo ra một giá trị duy nhất:
... GROUP BY IFNULL(collection_id,UUID())