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

Truy vấn MySql:Chọn 3 hàng trên cùng từ bảng cho mỗi danh mục

LIMIT chỉ dừng số lượng kết quả mà câu lệnh trả về. Những gì bạn đang tìm kiếm thường được gọi là các hàm phân tích / cửa sổ / xếp hạng - mà MySQL không hỗ trợ nhưng bạn có thể mô phỏng bằng cách sử dụng các biến:

SELECT x.*
  FROM (SELECT t.*,
               CASE 
                 WHEN @category != t.category THEN @rownum := 1 
                 ELSE @rownum := @rownum + 1 
               END AS rank,
               @category := t.category AS var_category
          FROM TBL_ARTIKUJT t
          JOIN (SELECT @rownum := NULL, @category := '') r
      ORDER BY t.category) x
 WHERE x.rank <= 3

Nếu bạn không thay đổi SELECT x.* , tập hợp kết quả sẽ bao gồm rankvar_category giá trị - bạn sẽ phải chỉ định các cột bạn thực sự muốn nếu đây không phải là trường hợp.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhiều GROUP_CONCAT trên các trường khác nhau bằng MySQL

  2. mysql Trường hợp không sử dụng hai cột

  3. Lấp khoảng trống trong ngày Trả về từ Cơ sở dữ liệu - giải pháp SQL thuần túy có được không?

  4. Làm thế nào để gỡ lỗi các truy vấn MySQL / Doctrine2?

  5. Có cách nào để giới hạn kết quả với ELOQUENT ORM của Laravel không?