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

mysql chọn tham gia bên trong có giới hạn

Bạn có thể sử dụng truy vấn xếp hạng mysql không có hàm cửa sổ cho loại kết quả này để nhận n bản ghi cho mỗi nhóm, tôi sẽ không đề xuất group_concat giải pháp vì là articles điều khoản nói rằng có thể có đủ dữ liệu và dễ dàng vượt qua giới hạn 1024 ký tự nếu bạn tăng giới hạn này, nó cũng phụ thuộc vào max_allowed_packet quá

SELECT * FROM (
SELECT *,
@r:= CASE WHEN @g = c.id THEN @r +1 ELSE 1 END rownum,
@g:= c.id catgroup
 FROM category c
 JOIN articles a ON (c.id = a,category_id)
CROSS JOIN (SELECT @g:=0,@r:=0) t2
ORDER BY c.id , a.`date` desc
) t
 WHERE rownum <= 5

Ở trên sẽ xếp hạng từng bài viết trong nhóm danh mục của nó, bạn có thể xem kết quả của rownum bí danh và trong truy vấn bên ngoài, chỉ cần lọc kết quả của các bài báo thành 5 cho mỗi nhóm danh mục



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sửa đổi trường CSV khi nhập thành mysql

  2. MySQL Crosstab / Tổng hợp Pivot. Xóa số lượng dựa trên cột trong bảng khác

  3. Sử dụng một truy vấn duy nhất để lấy từ nhiều bảng

  4. Tăng tốc bảng MyISAM chỉ đọc

  5. đóng băng pip cung cấp các mô-đun khác nhau từ trợ giúp ('mô-đun')