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

hiển thị 2 mục nhập cuối cùng trong mỗi danh mục từ bảng mysql

Loại kết quả này được xử lý tốt nhất bởi các hàm cửa sổ trong RDBMS khác nhưng tiếc là Mysql không có bất kỳ hàm cửa sổ nào, vì vậy, để thay thế, có một giải pháp sử dụng các biến do người dùng xác định để chỉ định thứ hạng cho các hàng thuộc cùng một nhóm

SELECT  `id`, `category`, `names`
FROM (
SELECT *,
@r:= CASE WHEN @g = category THEN @r + 1 ELSE 1 END rownum,
@g:=category
FROM test
  CROSS JOIN(SELECT @g:=NULL ,@r:=0) t
  ORDER BY category,id desc
) c
WHERE c.rownum <=2 

Truy vấn trên sẽ cung cấp cho bạn 2 bản ghi gần đây (trên cơ sở id) cho mỗi danh mục, bạn có thể thay đổi phần cuối cùng của truy vấn với mệnh đề where thành bất kỳ số nào để hiển thị n kết quả cho mỗi nhóm, ví dụ hiển thị 3 bản ghi thì WHERE c.rownum <= 3 và tiếp tục như vậy

Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tính toán sự khác biệt giữa hai ngày trong MySQL

  2. Sự khác biệt giữa phân vùng thả mysql và phân vùng cắt ngắn là gì

  3. Bảng lớn trong mysql Cập nhật các hàng dựa trên csv mọi lúc

  4. Di chuyển Ruby on Rails, hai khóa chính nhưng chỉ một khóa tự động tăng lên

  5. cách sắp xếp một phản hồi JSON dựa trên mối quan hệ cơ sở dữ liệu bằng cách sử dụng tài liệu hùng hồn