我不知道这个问题的标题是否有意义,但请允许我解释我的问题。
我有这样的桌子。
DocTag 表
DocId | TagId
10 | 8
10 | 45
11 | 2
11 | 15
12 | 9
12 | 32
13 | 8
13 | 15
标记表
TagId | TagName
8 | HomePage
2 | Private
45 | IssuerNameOne
15 | IssuerNameTwo
32 | IssuerNameThree
9 | TagThatNeedsToBeSkipped
3000 | NewTag
DocTag 表包含来自 Document 和 Tag 表的 FK。现在我必须选择那些具有 id 8 或 2 以及其他 id 之一的标签的文档(例如:45、32、15),当我在此表中找到该文档时,我必须插入 [DocId | 3000],其中 3000 是新标签的 id。
换句话说,我必须选择属于 HomePage 或 Private 的文档以及提到的发行者之一,并为该文档分配新标签。
我有数百万个文档和数百个标签,以及 72 个不同的发行者,所以我想我必须为每个发行者执行 72 次查询。
对于“IssuerNameOne”,选择查询的结果应该是:
DocId
10
因为有 8 个和 45 个 TagId。
对于“IssuerNameTwo”的选择查询结果应该是:
DocId
11
13
因为有 2、8 和 15 个 TagId。
插入执行后,DocTag 应如下所示:
DocId | TagId
10 | 8
10 | 45
11 | 2
11 | 15
12 | 9
12 | 32
13 | 8
13 | 15
10 | 3000
11 | 3000
13 | 3000