gpt4 book ai didi

SQL 查询 : Simulating an "AND" over several rows instead of sub-querying

转载 作者:行者123 更新时间:2023-12-04 02:47:25 26 4
gpt4 key购买 nike

假设我有一个包含两列的“标签”表: tagid contentid .每行代表一个分配给一段内容的标签。我想要一个查询,该查询将为我提供标记为 tagids 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 个标签的交集怎么办?这很快就会变得可怕。有任何想法吗?

编辑 :事实证明,这也包含在 this excellent blog post 中.

最佳答案

SELECT contentID
FROM tags
WHERE tagID in (334, 338, 342)
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = 3


--In general
SELECT contentID
FROM tags
WHERE tagID in (...) --taglist
GROUP BY contentID
HAVING COUNT(DISTINCT tagID) = ... --tagcount

关于SQL 查询 : Simulating an "AND" over several rows instead of sub-querying,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/163887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com