一个
INNER JOIN像由
join(Recording.recording_results)
仅当联接的两侧都存在匹配行时才会产生一行。
由
LEFT [OUTER]JOIN产生的A
Query.outerjoin()将在左侧包含行,而在右侧则没有匹配行,因此,如果没有其他使用右侧表的谓词,则更改联接类型会有所帮助。
实际上,您可以这样做,但是它确实是“有效的”,因为它是一种
IS NULL检查。不过,
ON在这种情况下,它的适当位置是子句:
outerjoin(RecordingResult, and_(Recording.recording_results, RecordingResult.deletedd_at == None))
取代的使用
filter()。



