Tôi có một cơ sở dữ liệu với 1000 bản ghi. Tôi đang cố gắng tạo một câu lệnh SQL vì vậy nếu số lượng bản ghi tăng lên trên 1000, thì các bản ghi cũ nhất sẽ bị xóa (tức là các bản ghi mới trên 1000 'thay thế' các bản ghi cũ nhất). Tôi đang sử dụng SQLite, nhưng tôi cho rằng cú pháp SQL thông thường sẽ khớp ở đây.Xóa các bản ghi cũ nhất khỏi cơ sở dữ liệu
Trả lời
Nếu bạn sử dụng một lĩnh vực tự động tăng, bạn có thể dễ dàng viết này để xóa lâu đời nhất 100 hồ sơ:
DELETE FROM mytable WHERE id IN (SELECT id FROM mytable ORDER BY id ASC LIMIT 100)
Hoặc, nếu không có trường như vậy là hiện nay, sử dụng ROWID
:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID ASC LIMIT 100)
Hoặc chỉ để lại 1000 bản ghi mới nhất:
DELETE FROM mytable WHERE ROWID IN (SELECT ROWID FROM mytable ORDER BY ROWID DESC LIMIT -1 OFFSET 1000)
Cảm ơn, nhưng tôi cần một ... giới hạn -1 bù đắp 1000 – Seven
Tôi đã suy nghĩ về việc sử dụng này cũng có, nhưng sẽ không MySQL sử dụng các ID đã xóa trước đó vì vậy điều này sẽ không làm việc nữa? Vì ID = 1 sẽ có sẵn, một hàng mới hơn sẽ được tạo với ID = 1 sau đó sẽ bị xóa đầu tiên ..? – NaturalBornCamper
Giả sử rằng bảng của bạn có Key và một cột với timestamp chỉ khi bản ghi được chèn), bạn có thể sử dụng một truy vấn dọc theo dòng của
delete from tableToDeleteFrom
where tablePK in
(select tablePK
from tableToDeleteFrom
where someThresholdDate <= @someThresholdDate)
Đối xóa tất cả hồ sơ, ngoại trừ bản ghi đầu tiên (min/max id), bạn có thể sử dụng:
SET @ls AS INT
SELECT @ls = MIN(id) FROM DATA
DELETE FROM DATA WHERE id <> @ls
Có thực sự trả lời câu hỏi không? – voromax
- 1. Làm cách nào để xóa khỏi cơ sở dữ liệu?
- 2. Xóa thực thể html khỏi cơ sở dữ liệu
- 3. Cách xóa cơ sở dữ liệu postgres khỏi heroku
- 4. Làm cách nào để xóa dữ liệu cũ khỏi logcat?
- 5. Bản ghi Android tồn tại() trong cơ sở dữ liệu?
- 6. RestKit xóa dữ liệu cũ khỏi dữ liệu lõi bằng cách sử dụng setObjectMapping
- 7. Làm cách nào để tăng tốc độ xóa khỏi bảng cơ sở dữ liệu lớn?
- 8. Làm thế nào để xóa rất nhiều bản ghi từ cơ sở dữ liệu SQL nhanh?
- 9. Sử dụng cơ sở dữ liệu 'cũ' với django
- 10. Xóa cơ sở dữ liệu từ C#
- 11. Postgresql xóa các hàng cũ trên cơ sở cán?
- 12. Xóa (hợp nhất) tệp dữ liệu thứ cấp của cơ sở dữ liệu SQL Server
- 13. Tại sao một số kết nối mysql chọn dữ liệu cũ cơ sở dữ liệu mysql sau khi xóa + chèn?
- 14. Làm cách nào để chèn bản ghi từ cơ sở dữ liệu mongo này vào cơ sở dữ liệu khác?
- 15. Xóa bản ghi cũ khỏi bảng mysql nhưng vẫn giữ bản sao lưu
- 16. Xóa tất cả các hàng trong bảng khỏi bảng cơ sở dữ liệu SQLite
- 17. Xóa các ký tự N cuối cùng khỏi trường trong cơ sở dữ liệu SQL Server
- 18. cách xóa bản ghi khỏi ORMLITE?
- 19. Bảng xóa MySQL - Cơ sở dữ liệu hiện tại hoặc mọi cơ sở dữ liệu?
- 20. Hủy/Xóa cơ sở dữ liệu trong Rails
- 21. Cơ sở dữ liệu hợp nhất Rails
- 22. Truy vấn SQL để xóa các bản ghi cũ hơn hai năm
- 23. Xóa tất cả trừ n trên cùng khỏi bảng cơ sở dữ liệu trong SQL
- 24. Xóa cơ sở dữ liệu khi Tài khoản bị xóa
- 25. Xóa bản ghi khỏi bảng điều khiển - Ruby on Rails
- 26. Cách xóa ký tự khỏi phần cuối của trường trong cơ sở dữ liệu MySql
- 27. Tự động xóa các bản ghi IntelliTrace cũ
- 28. Tôi có thể xóa bản sao cơ sở dữ liệu dựa trên nhiều cột không?
- 29. Xóa một cơ sở dữ liệu ravendb trong khi ravendb đang chạy lưu trữ cơ sở dữ liệu khác
- 30. Hoàn toàn xóa cam kết khỏi cơ sở dữ liệu git
Bạn có thể nhận được nhiều câu trả lời hơn nếu bạn bao gồm một số chi tiết lược đồ bảng. – serg10
Bạn có thể muốn cung cấp thêm thông tin. Giống như bạn có một dấu thời gian trên các cột? Id là GUID hay tăng tự động? mục tiêu của bạn là gì để loại bỏ tất cả cũ hơn X ngày hoặc là có một giới hạn của 1000 hồ sơ? hoặc lý do xóa các hồ sơ này là gì? Chúng tôi có thể trả lời tốt hơn câu hỏi của bạn sau đó. –
Ồ và trường khóa chính của bạn là gì? hoặc thậm chí bạn có một? –