作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在用 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/
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
Redmi 官方今天宣布了 Redmi智能电视 A 系列新品,称即将开放预约。 官方并未公布 Redmi智能电视 A 系列新品的具体信息,但给出的海报显示该系列提供五种尺寸:32 英寸、43
我是一名优秀的程序员,十分优秀!