我想删除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()
上一个查询有什么问题?
答案 0 :(得分:2)
最好的建议是将SQL FK从(删除无操作时)更新到(删除级联时),这将删除SQL DB上的所有相关行:
从tblContent删除 在哪里ArticleID =&#39; givenArticleID&#39;;
这将处理数据库中的所有相关行。
另一种方法是首先删除相关的然后删除父亲。
答案 1 :(得分:0)
您没有为联接删除查询使用正确的语法
DELETE content.*,comments.*
FROM content
INNER JOIN comments ON content.id = comments.content_id
WHERE content.delete_time < UNIX_TIMESTAMP()
通过这种方式,您可以删除内容表中的行以及与delete_time小于UNIX_TIMESTAMP()的每个内容相关的行,但请确保首先测试对演示数据的查询而不是直接测试生产数据