2011-01-20 29 views
5

Tôi biết có nhiều câu hỏi trên đó khớp với điều này, nhưng tôi tương đối mới đối với mysql và tôi dường như không thể thực hiện tác vụ này bằng cách sử dụng các nhiệm vụ phụ hoặc từ khóa USING, cộng với tôi thấy mysql trên dòng tài liệu là một bí ẩn hoàn chỉnh.Không thể tham gia vào truy vấn xóa mysql để làm việc

tôi bắt đầu cố gắng xây dựng truy vấn DELETE của tôi sử dụng một truy vấn SELECT như cơ sở của tôi và đã có thể nhận được tất cả các hàng mà tôi muốn xóa:

select * 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

và sau đó chỉ cần thay thế chọn tất cả với DELETE vậy:

delete 
from writings_tags_link 
join writing_tags on writing_tags.id = writings_tags_link.tag_id 
where writing_tags.tag = 'tag one' 

Tôi thu thập từ cả thông báo lỗi và các bài đăng tương tự khác mà bạn không thể sử dụng 'ON' để tham gia các bảng trong truy vấn xóa, bạn phải sử dụng USING hoặc truy vấn phụ. Các truy vấn tôi xây dựng với SỬ DỤNG trả về một lỗi thực sự kỳ lạ, lần đầu tiên truy vấn:

DELETE 
FROM writings_tags_link 
USING writing_tags_link INNER JOIN writing_tags 
WHERE writing_tags.id = writings_tags_link.tag_id 
AND writing_tags.tag ='tag one' 

lỗi:

#1109 - Unknown table 'writings_tags_link' in MULTI DELETE 

Bảng này không tồn tại, rõ ràng, ban đầu chọn truy vấn của tôi trả lại kết quả mong muốn. Bất kỳ trợ giúp/giải thích sẽ rất được đánh giá cao!

Xin lưu ý, tôi chỉ đang cố xóa dữ liệu trong bảng liên kết.

Trả lời

8

Thông tin của bạn là không chính xác về yêu cầu việc sử dụng các từ khóa USING trong cú pháp DELETE khi sử dụng câu lệnh JOIN - các documentation provides examples in the multi-delete section:

DELETE wtl 
    FROM WRITINGS_TAGS_LINK wtl 
    JOIN WRITING_TAGS wt ON wt.id = wtl.tag_id 
WHERE wt.tag = 'tag one' 
+1

oh Tôi thấy, tôi không thêm những gì để xóa! Như tôi đã nói, tôi đang học :) Cảm ơn, OMG Ponies! – JoeM05

+0

điều này đã giúp tôi trong noobery của tôi cũng :) –

Các vấn đề liên quan