Tìm thấy liên kết này hữu ích
Được sao chép từ đó
Thông thường, người ta muốn xóa một số bản ghi khỏi bảng dựa trên tiêu chí trong bảng khác. Làm cách nào để xóa khỏi một trong các bảng đó mà không xóa các bản ghi trong cả hai bảng?
DELETE DeletingFromTable
FROM DeletingFromTable INNER JOIN CriteriaTable
ON DeletingFromTable.field_id = CriteriaTable.id
WHERE CriteriaTable.criteria = "value";
Điều quan trọng là bạn chỉ định tên của bảng sẽ bị xóa làm CHỌN. Vì vậy, JOIN và WHERE thực hiện lựa chọn và giới hạn, trong khi DELETE thực hiện việc xóa. Tuy nhiên, bạn không bị giới hạn chỉ trong một bảng. Nếu bạn có mối quan hệ nhiều-nhiều (ví dụ: Tạp chí và Người đăng ký, do một Đăng ký tham gia) và bạn đang xóa Người đăng ký, bạn cũng cần xóa mọi bản ghi tiềm năng khỏi mô hình tham gia.
DELETE subscribers, subscriptions
FROM subscribers INNER JOIN subscriptions
ON subscribers.id = subscriptions.subscriber_id
INNER JOIN magazines
ON subscriptions.magazine_id = magazines.id
WHERE subscribers.name='Wes';
Việc xóa các bản ghi với một phép kết hợp cũng có thể được thực hiện bằng LEFT JOIN và WHERE để xem liệu bảng đã tham gia có phải là NULL hay không, do đó bạn có thể xóa các bản ghi trong một bảng không có khớp (như để chuẩn bị thêm mối quan hệ) ) Ví dụ bài đến.