2016-04-22 86 views
0

评语表加入MySQL的左删除与另一个表

+------+----------+ 
| id | comment | 
+------+----------+ 
| 1 | foo  | 
| 2 | bar  | 
| 3 | foobar | 
+------+----------+ 

回复表

+------+----------+------------+ 
| id | reply |comment_id | 
+------+----------+------------+ 
| 1 | nice lol | 1   | 
| 2 | ok ok | 2   | 
| 3 | hello | 1   | 
| 4 | hello2 | 1   | 
| 5 | hello1 | 1   | 
+------+----------+------------+ 

like_reply表

+------+----------+ 
| id | reply_id | 
+------+----------+ 
| 1 | 1  | 
| 2 | 2  | 
| 3 | 3  | 
| 4 | 4  | 
| 5 | 5  | 
+------+----------+ 


DELETE `comment`,`reply` FROM `comment` LEFT JOIN `reply` 
ON `comment`.`id` = `reply`.`comment_id` WHERE `comment`.`id` = '1' 

此查询必须删除ID为一个和所有的回复评论comment_id one

但我怎么能加入like_reply表并删除所有喜欢回复

与回复ID和注释ID与回复表的关系用的CommNet表关系的回复表like_replay

+0

你为什么投票下来? –

回答

1

试试这个:

DELETE c, r, lr 
FROM `comment` AS c 
LEFT JOIN `reply` AS r ON c.id = r.comment_id 
LEFT JOIN like_reply AS lr ON r.id = lr.reply_id 
WHERE c.id = 1; 

Demo here

上面的查询从comment表中reply和0的相关记录一起删除与id=1记录评论表。

不过,如果你总是comment记录删除到级联到其他表,那么你应该考虑把foreign key constraintsreplylike_reply表与ON DELETE CASCADE节..

0

你不能具体在删除列..

DELETE FROM `comment` LEFT JOIN `reply` 
ON `comment`.`id` = `reply`.`comment_id` WHERE `comment`.`id` = '1' 
如果你想“删除”只能在一些行你fiedl应该使用更新