2010-08-04 37 views
6

tôi có thể sử dụngmysql delete on join?

select * from sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6; 

chọn hàng phù hợp nhất,

Làm thế nào tôi có thể viết một truy vấn để xóa các hàng kết hợp của cả hai bên?

Something như

delete sent_txts s 
LEFT JOIN received_txts r ON s.msg_link_id = r.id 
WHERE r.action_id = 6; 

Trả lời

5

Disclaimer: Tôi không có quyền truy cập vào cơ sở dữ liệu mysql để kiểm tra vào lúc này, nhưng tôi nghĩ rằng bạn có thể sử dụng:

delete s, r from send_txts s left join received_txts r on s.msg_link_id = r.id where r.action_id = 6; 

tài liệu delete Xem mysql để biết thêm thông tin. Một phương pháp tốt hơn có thể là đặt một ràng buộc khóa ngoài từ receive_txts để gửi, và xếp tầng xóa.

3

Cá nhân tôi thích mệnh đề USING, nhưng câu trả lời trước đó cũng không kém phần hợp lệ. Tôi thứ hai gợi ý để xem xét sử dụng một ràng buộc khóa ngoại, đó là một cách hiệu quả hơn nhiều để hoàn thành điều này.

DELETE FROM s, r USING sent_txts s LEFT JOIN received_txts r ON s.msg_link_id = r.id WHERE r.action_id = 6; 
Các vấn đề liên quan