我想从content
表中删除文章,同时从comments
表中删除与删除的这些文章相关的注释。
我已经创建了以下查询:
$sql = "DELETE FROM content JOIN comments ON content.id = comments.content_id WHERE content.delete_time < UNIX_TIMESTAMP()";
$this->db->query($sql);
但我有一个错误:
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN comments ON content.id = comments.content_id WHERE delete_time < UNIX_TIMES' at line 1
DELETE FROM content JOIN comments ON content.id = comments.content_id WHERE delete_time < UNIX_TIMESTAMP()
上一个查询中有什么错误?
最好的建议是将SQL FK从(删除时无操作)更新为(删除级联时),这将删除SQL DB上的所有相关行,只需:
从tbl内容中删除其中ArticleID="givenArticleID";
并且这将处理DB中的所有相关行。
另一种方法是先删除相关的,然后删除父亲。
您没有为联接的删除查询使用正确的语法
DELETE content.*,comments.*
FROM content
INNER JOIN comments ON content.id = comments.content_id
WHERE content.delete_time < UNIX_TIMESTAMP()
通过这种方式,您可以从内容表中删除行,以及与delete_time小于UNIX_TIMESTAMP()的每个内容相关的行,但请确保首先在演示数据上测试查询,而不是直接在生产数据上测试查询