You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLAlchemy多对多关联表查询:仅获取关联书籍title字段

高效查询关联作者的书籍title字段的实现方式

直接用下面两种方式就能满足需求,既不会冗余字段,也不会加载完整Book对象影响性能:

方式一:子查询过滤(逻辑直观)

先通过子查询拿到所有关联过作者的书籍ID,再精准查询这些ID对应的title字段:

# 子查询获取关联作者的书籍ID集合
book_id_subquery = session.query(distinct(AuthorBook.book_id)).subquery()

# 只查询需要的title字段,返回结果列表
target_titles = [title for title, in session.query(Book.title).filter(Book.id.in_(book_id_subquery))]

方式二:JOIN关联+去重

通过关联中间表和书籍表,直接查询title并去重,一步到位:

target_titles = [title for title, in session.query(distinct(Book.title)).join(AuthorBook, Book.id == AuthorBook.book_id)]

核心优势

  • 仅查询title单个字段,不会加载完整的Book实例,减少数据传输量和内存消耗
  • 完全不需要修改中间表结构,不用冗余任何字段
  • 利用外键索引(author_book.book_id作为外键通常会自动创建索引),查询效率有保障

内容的提问来源于stack exchange,提问作者avi menashe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:17:11