Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Xóa một bản ghi đơn lẻ từ dữ liệu trùng lặp trong MySQL với LIMIT

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;
  • LIMIT trong DELETE chỉ hỗ trợ từ MySQL 4.0+.
  • Luôn test với SELECT trướ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;