gpt4 book ai didi

sql - 在sqlite多对多示例中,如何获取2个标签共有的书签?

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:46 24 4
gpt4 key购买 nike

我正在用 Python (Flask) 创建一个简单的书签管理 Web 应用程序,但主要是为了获得 SQL 方面的经验(使用 sqlite)。我正在使用我们可以以多对多方式链接到书签的标签(类似于 stackoverflow 问题)。我创建了 3 个表,如下所示:

bookmarks :
bm_id | bm_title | bm_link
1 | bm_title1 | bm_link1
2 | bm_title2 | bm_link2
3 | bm_title3 | bm_link3
4 | bm_title4 | bm_link4

tags :
bm_id | t_name
1 | t_name1
2 | t_name2
3 | t_name3
4 | t_name4

bookmarktag :
bmt_id | bookmark_id | tag_id
3 | 3 | 3
5 | 3 | 2
6 | 4 | 3
7 | 4 | 2
1 | 1 | 1
2 | 1 | 2
4 | 3 | 1
8 | 2 | 3

我知道如何列出与特定标签关联的所有书签。

但我想知道如何列出 2 个特定标签共有的书签。 例如,如果我要搜索标签 2 和 3 共有的书签;它应该只显示书签 3 和 4。

我只能使用 SELECT * FROM bookmarktag bmt WHERE bmt.tag_id=2 OR bmt.tag_id=3; 列出与标签 2 和 3 关联的所有书签。但正如您所知,它列出了所有链接到标签 2 和 3 的书签。

谢谢!

最佳答案

许多集合操作可以用compound queries来完成:

SELECT *
FROM bookmarks
WHERE bm_id IN (SELECT bookmark_id FROM bookmarktag WHERE tag_id = 2
INTERSECT
SELECT bookmark_id FROM bookmarktag WHERE tag_id = 3)

关于sql - 在sqlite多对多示例中,如何获取2个标签共有的书签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23152030/

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