Loading

如何在 django 中用 orm 写子查询

如果想实现下面的 SQL:

SELECT * FROM book WHERE author_id IN (SELECT id FROM author WHERE name LIKE 'kingron%')

可以这样写:

authores = Author.objects.filter(name__startswith='kingron')

# 默认使用 pk 作为查询的列
books = Book.objects.filter(author_id__in=authores)

也可以通过 values 指定子查询的列

authores = authores.values('name')
books = Book.objects.filter(author_name__in=authores)

对应的 SQL 类似于:

SELECT * FROM book WHERE author_name IN (SELECT name FROM author WHERE name LIKE 'kingron%')
posted @ 2024-06-21 08:37  kingron  阅读(9)  评论(0编辑  收藏  举报