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

Cách chọn cho đến khi đạt được tổng

Bạn cần một số cách để sắp xếp những bản ghi nào được ưu tiên hơn những bản ghi khác khi cộng đến các đơn vị tối đa của bạn. Nếu không, làm sao bạn biết bạn giữ bộ hồ sơ nào có tổng số lên đến 600?

SELECT d.id, d.size, d.date_created
FROM documents d
INNER JOIN documents d2 ON d2.tag_id=d.tag_id AND d2.date_created >= d.date_created
WHERE d.tag_id=26
GROUP BY d.id, d.size, d.date_created
HAVING sum(d2.size) <= 600
ORDER BY d.date_created DESC

Đây chỉ là một truy vấn cơ bản để giúp bạn bắt đầu và vẫn còn một số vấn đề cần giải quyết:

  • Nó dừng lại ở <=600, vì vậy trong hầu hết các trường hợp, bạn sẽ không điền chính xác vào giới hạn kích thước của mình. Điều này có nghĩa là bạn có thể muốn tinh chỉnh nó để cho phép một bản ghi nữa. Ví dụ:nếu bản ghi đầu tiên> 600, truy vấn sẽ không trả lại gì và đó có thể là một vấn đề.
  • Việc kiểm tra các bản ghi nhỏ hơn bổ sung sau này có thể vẫn vừa với giới hạn sẽ không làm được gì.
  • Các bản ghi có các giá trị được tạo ngày tháng giống hệt nhau có thể được 'đếm gấp đôi' ở đây và ở đó.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bạn khắc phục lỗi tệp khóa MySQL không chính xác khi bạn không thể sửa chữa bảng?

  2. MySQL sắp xếp các cột bảng hiện có

  3. Cách đặt lại mật khẩu gốc MySQL hoặc MariaDB trong Linux

  4. Cảnh báo:mysqli ::mysqli ():(HY000 / 1045):Quyền truy cập bị từ chối đối với người dùng 'cơ sở dữ liệu' @ 'localhost' (sử dụng mật khẩu:NO) trong

  5. Tối ưu hóa MySQL cho ALTER TABLE của InnoDB