假设我有一个包含两列的“标签”表:tagid和contentid。每行代表分配给一段内容的标签。我想要一个查询,它会给我每条用 tagid 334、338 和 342 标记的内容的 contentid。
执行此操作的“简单”方法是(伪代码):
select contentid from tags where tagid = 334 and contentid in (
select contentid from tags where tagid = 338 and contentid in (
select contentid from tags where tagid = 342
)
)
然而,我的直觉告诉我,有更好、更快、更可扩展的方法来做到这一点。例如,如果我需要找到 12 个标签的交集怎么办?这很快就会变得可怕。有任何想法吗?
编辑:原来这也包含在这篇优秀的博客文章中。