Khi có nhiều bản ghi trùng giá trị và chỉ muốn xóa một trong số chúng, dùng DELETE ... LIMIT 1.
Cú pháp
DELETE FROM ten_bang WHERE cot = gia_tri LIMIT 1;
Ví dụ minh họa
Tạo bảng và chèn dữ liệu (3 bản ghi giá trị 50):
CREATE TABLE DemoTable (Amount INT); INSERT INTO DemoTable VALUES (50), (100), (50), (70), (90), (50);
Xóa 1 bản ghi Amount = 50:
DELETE FROM DemoTable WHERE Amount = 50 LIMIT 1;
Kết quả sau xóa
| Amount |
|---|
| 100 |
| 50 |
| 70 |
| 90 |
| 50 |
→ Còn lại 2 bản ghi 50 (ban đầu 3 bản ghi).
Lưu ý quan trọng
- Không xác định hàng nào bị xóa nếu không có
ORDER BY. MySQL xóa hàng đầu tiên tìm thấy (thường theo thứ tự vật lý). - Để xóa hàng cụ thể, thêm
ORDER BY(MySQL hỗ trợ):
DELETE FROM DemoTable WHERE Amount = 50 ORDER BY Id ASC -- hoặc cột khác để xác định LIMIT 1;
LIMITtrong DELETE chỉ hỗ trợ từ MySQL 4.0+.- Luôn test với
SELECTtrước:SELECT * FROM DemoTable WHERE Amount = 50 LIMIT 1.
Xóa N bản ghi đầu tiên
DELETE FROM DemoTable WHERE Amount = 50 ORDER BY Id LIMIT 2;