Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhóm MySQL theo và bỏ qua nhóm trên các giá trị rỗng

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())


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi nên lưu trữ trường PRICE dưới dạng int hay float trong cơ sở dữ liệu?

  2. Lớp / mã kết nối PDO và thiết kế lớp

  3. Xử lý tập hợp kết quả lớn từ mysql với bộ nhớ hạn chế

  4. MySql:Đếm số lần các từ xuất hiện trong một cột

  5. Câu hỏi và câu trả lời phỏng vấn MySql phổ biến cho người mới hơn + có kinh nghiệm