我有一个表,其中包含另一个表中的实体的许多修订(任务)。因此,每个TaskRevision行都有一个唯一的自动增量ID和对任务ID的引用。
我可以使用以下方法找到所有任务的最新版本:
subq = session.query(TaskRevision.task_id, func.max(TaskRevision.id).label("max_id")) \ .group_by(TaskRevision.task_id).subquery() session.query(Task) \ .join(subq, Task.id == subq.c.task_id) \ .join(TaskRevision, TaskRevision.id == subq.c.max_id) \ .with_entities(Task, TaskRevision)
如何找到最新的2个修订版,大概是使用修订后的子查询?
答案 0 :(得分:0)
工作SQL非常多:
db.coll1.find({"arr.id":{$nin:[db.coll2.find({},"id")]}}).count()
经过大量工作,这是SQLAlchemy的答案:
select task_id, id from TaskRevisions where (
select count(*) from TaskRevisions as t
where t.task_id = TaskRevisions.task_id and t.id <= TaskRevisions.id
) <= 2