2015-04-30 75 views
0

我在網上搜索了很多,我無法弄清楚如何做我的簡單任務。從左表中刪除多行的行

我想刪除所有那些即時選擇與此下面的查詢選擇的行。

`SELECT * FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

我嘗試用

DELETE FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

刪除這些行我試圖做類似這樣的帖子答案 Deleting rows with MySQL LEFT JOIN 但它不工作的東西。

我怎樣才能使這個查詢,而不必在我的應用程序做一個循環?

回答

2

如果需要只能從一個表,則這是可以做到的

DELETE s FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 

對於從連接多個表刪除刪除它會像

DELETE s,p,ps FROM `session` s 
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId) 
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId) 
WHERE s.`JSEnabled` = 0 
+0

不行呀,我需要刪除與會話錶行匹配的所有錶行都被選中 –

+0

哦,哇,我曾經這麼做過,但是我使用的是表名。 非常感謝您的快速回答!我必須等待將此答案標記爲已接受大聲笑。 –

+0

DELETE子句中的OUTER JOIN是一種罕見事件。也許有一個原因! – Strawberry