mysql 删除与另一个表中的字段检查


mysql DELETE with field check from another table

大家早上好,周四早上快乐。 我希望我能自己完成这项工作,但由于我(还)不是 MySQL 语句的大师,而且我在这个DELETE查询中迷失了方向,所以它在这里......

我必须做一个简单的DELETE查询,(通过其 id 删除评论)

DELETE FROM mya_news_comments WHERE comment_id='".$_GET['comment_id']."'";

但同时,为了防止人们删除整个网站的评论我需要确保删除此评论的人应该是它应该是谁(在我们的例子中,是艺术家)。

我有另一个表mya_news其中有news_id字段,artist_idmya_news_comments中,我还有一个字段叫做news_id

所以我需要检查我是否删除了特定艺术家的comment_id,而不是其他艺术家的。基本上我需要交叉检查 mya_news_comments 签出的 news_id 字段是否与 mya_news 中具有相同news_id的字段,并且来自 mya_newsartist_id等于 $_id(它保存了我的artist_id

我真的被困在这里了。如果需要,我很乐意提供更多细节。

谢谢。

DELETE mya_news_comments
FROM   mya_news_comments
WHERE  mya_news_comments.comment_id = (SELECT [another_table].comment_id WHERE [cond])
   AND mya_news.artist_id = (SELECT [another_table].artist_id WHERE [cond]);

您可以在DELETE语句中联接表,就像在SELECT语句中一样:

DELETE mya_news_comments
FROM   mya_news_comments JOIN mya_news USING (news_id)
WHERE  mya_news_comments.comment_id = ?
   AND mya_news.artist_id = ?