mysql删除左连接与另一个表

时间:2016-04-22 12:02:05

标签: mysql

评论表

Servo()

回复表

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

like_reply table

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

此查询必须删除id为1的注释,并使用comment_id one

删除所有回复

但我如何加入like_reply表并删除所有喜欢的回复

与回复表有关系的like_replay和回复表与回复表有关联的回复表

2 个答案:

答案 0 :(得分:2)

试试这个:

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

上述查询删除了来自id=1表的comment条记录的评论以及replylike_reply表格中的相关记录。

但是,如果总是希望将comment记录删除到级联到其他表,那么您应该考虑将foreign key constraints放在{带有reply子条款的{1}}和like_reply个表..

答案 1 :(得分:0)

您无法删除..

中的特定列
DELETE FROM `comment` LEFT JOIN `reply`
ON `comment`.`id` = `reply`.`comment_id` WHERE `comment`.`id` = '1'

如果你想"删除"只有行中的一些fiedl你应该使用update