2016-04-15 58 views
2

我有一個問題與MySQL查詢加盟.. 查詢是:留在刪除查詢

DELETE address_book.*, address_book_tags.*, address_book_tags_contacts.* from address_book, address_book_tags, address_book_tags_contacts 
      LEFT JOIN address_book_tags_contacts on address_book.id = address_book_tags_contacts.contactId 
      LEFT JOIN address_book_tags on address_book_tags_contacts.tagId = address_book_tags.id 
    WHERE address_book.idVitalStatistic=1; 

的錯誤是:

RuntimeException的「與消息」不是唯一的表/別名:'address_book_tags_contacts'(1066)'

我該怎麼辦?

+1

要通過這個刪除查詢來實現.....不要混用逗號加入與離開加盟究竟.. .. –

回答

0

您在FROM中有一個表address_book_tags_contacts和address_book_tags,就像在一個LEFT JOIN中一樣。如果這是故意的(我不這麼認爲),你必須給他們一個獨特的名字。但我想你應該從FROM子句中刪除這些表名。

0

address_book_tags_contacts需要別名,像這樣;)

DELETE address_book.*, abt1.*, abtc1.* 
FROM 
    address_book, address_book_tags abt1, address_book_tags_contacts abtc1 
    LEFT JOIN address_book_tags_contacts abtc2 ON ... 
    LEFT JOIN address_book_tags abt2 ON ... 

@Steve要通過此查詢居然要刪除什麼。

0

address_book_tags, address_book_tags_contacts出現兩次。

刪除重複的:

DELETE address_book.*, address_book_tags.*, address_book_tags_contacts.* 
from address_book 
    LEFT JOIN address_book_tags_contacts on address_book.id = address_book_tags_contacts.contactId 
    LEFT JOIN address_book_tags on address_book_tags_contacts.tagId = address_book_tags.id 
WHERE address_book.idVitalStatistic=1; 
+0

現在queery正在工作沒有語法錯誤,但問題是,查詢不是從表address_book_tags和address_book_tags_contact刪除任何東西,但僅從ab – Steve

+0

這意味着在abt和abtc中沒有匹配。 –

0

嘗試:

DELETE address_book, address_book_tags, address_book_tags_contacts from address_book 
      LEFT JOIN address_book_tags_contacts on address_book.id = address_book_tags_contacts.contactId 
      LEFT JOIN address_book_tags on address_book_tags_contacts.tagId = address_book_tags.id 
    WHERE address_book.idVitalStatistic=1;