【发布时间】:2024-05-23 04:00:01
【问题描述】:
我正在寻找一种方法将此查询转换为等效的 Django 查询集:
SELECT a.name, b.num_something FROM table_a a,
(SELECT id, COUNT(id) as num_something FROM table_b
GROUP BY id ORDER BY id DESC LIMIT 10) b
WHERE a.id=b.id;
table_a 和 table_b 的键没有通过 FK 约束连接(这是我无法触及的东西,不是我的代码部分),但值表示 table_a 和 table_b 之间的关系。
我已经设法根据我的需要获得一个子查询来检索结果。现在我没有得到将它嵌入到主查询中的部分(显然,如果 ORM 允许这样做)。我的实际查询如下所示:
Something.objects.values_list(
'id').annotate(
num_something=Count('id')).order_by(
'-num_something')[:10]
编辑 我不想使用原始 SQL 查询的原因主要是因为我不确定 MySQL 是始终与软件一起使用的数据库。例如,此查询不适用于 Oracle。
【问题讨论】: