我最終需要一個包含「專輯」 記錄的「導入」記錄列表,每個記錄只有一首「歌曲」。使用嵌套group by/having子句進行復雜連接?
這是我現在使用什麼:
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)
);
嵌套選擇(與連接)的速度極快,但外部 「在」條款是速度奇慢。
我試圖讓整個查詢成爲單個(無嵌套)連接,但運行 時出現了group/having子句的問題。我能做的最好的事情是 帶有模糊的「導入」記錄列表,這是不可接受的。
是否有更優雅的方式來組成這個查詢?
你會指定RDBMS嗎? – Sung 2009-02-23 21:14:31