我最终需要一个“导入”记录列表,其中包括每个只有一首“歌曲”的“专辑”记录。
这就是我现在正在使用的:
select i.id, i.created_at
from imports i
where i.id in (
select a.import_id
from albums a inner join songs s on a.id = s.album_id
group by a.id having 1 = count(s.id)
);
嵌套选择(带有连接)非常快,但外部“in”子句非常慢。
我试图使整个查询成为单个(无嵌套)连接,但遇到了 group/having 子句的问题。我能做的最好的就是列出带有欺骗性的“导入”记录,这是不可接受的。
有没有更优雅的方式来编写这个查询?