我有以下数据库:
例如,我有一个带有
我希望这可以在一个数据库查询中完成,而不是迭代每个要删除的项目。
Posts
,它们具有Id
,Tags
也具有Id
,并且TagsToPosts
表具有TagsToPosts.PostId => Posts.Id
和TagsToPosts.TagId => Tags.Id
的FK关系。
我需要以以下方式从TagsToPosts
中删除多个项目。
我通过解析一个字符串来创建IList<Tag> newTags
。每个标记都有其名称。我想删除所有指向单个帖子的TagsToPosts
项目(TagsToPosts.PostId == mypostid
),并且指向不在我的newTags
中的标记的项目。例如,我有一个带有
Id = 1
的帖子,三个标签:1 => "tag1",2 => "tag2",3 => "tag3"
和许多对多关系表TagsToPosts
:1 => 1,1 => 2,1 => 3
所以所有三个标记都链接到我的帖子。
之后,我将通过解析字符串创建一个新的IList<Tag> newList = new List<Tag>()
。newList
包含:0 => "tag1",0 => "tag2"
。
现在,我想从表TagsToPosts中删除第三个关系,因为我的新标记列表不包含名称为“tag3”的标记。所以我需要找到一个差异。我知道我可以使用JOIN查找相似的项目,但如何查找差异呢?我希望这可以在一个数据库查询中完成,而不是迭代每个要删除的项目。