Giả sử một bảng với các cột sau:câu lệnh SQL để xóa các bản ghi cũ hơn XXX miễn là có hơn hàng YY
pri_id
, item_id
, comment
, date
Những gì tôi muốn có một là Truy vấn SQL sẽ xóa mọi bản ghi, cho một item_id
cụ thể cũ hơn một ngày cụ thể, NHƯNG chỉ miễn là có hơn 15 hàng cho số item_id
đó.
Điều này sẽ được sử dụng để thanh lọc các bản ghi nhận xét cũ hơn 1 năm cho các mục nhưng tôi vẫn muốn giữ ít nhất 15 bản ghi tại bất kỳ thời điểm nào. Bằng cách này, nếu tôi có một bình luận trong 10 năm, nó sẽ không bao giờ bị xóa nhưng nếu tôi có 100 ý kiến trong 5 ngày qua, tôi chỉ giữ 15 hồ sơ mới nhất. Đây là tất nhiên số lượng bản ghi tùy ý và khung thời gian ngày cho ví dụ này.
Tôi muốn tìm một cách rất chung chung để làm điều này mà sẽ làm việc trong mysql, oracle, postgres vv. Tôi đang sử dụng thư viện adodb phps cho DB trừu tượng vì vậy tôi muốn nó hoạt động tốt với điều đó nếu khả thi.
Đối với tất cả người dùng trong tương lai của truy vấn này, hãy cẩn thận vì truy vấn này sẽ không lưu giữ 15 bản ghi ban đầu thuộc bất kỳ item_id nào bắt đầu truy vấn với 15. –