试图绕过这个问题,但这里是......
表:TVEpisode
专栏:TVEpisodeID(PK),TVSeriesID,季节(数字),剧集(数字),观看(0或1)
我希望获得的是每个TVSeries的首部未观看(价值0)剧集。例如,如果我已经观看了第一季的TVSeriesID(45)以及我观看过的第2集第2集,那么我希望该查询返回:
TVEpisodeID | TVSeriesID | Season | Episode
PK | 45 | 2 | 6
需要每个TVSeries的结果
答案 0 :(得分:4)
在大多数数据库中,您可以使用ANSI标准窗口函数执行此操作:
select tve.*
from (select tve.*
row_number() over (partition by tvseriesid order by season, episode) as seqnum
from tvepisode tve
where tve.watched = 0
) tve
where seqnum = 1;
我认为“第一个”指的是season
和episode
的组合。
答案 1 :(得分:0)
这应该为您提供所有季节/剧集组合的第一个watched=0
SELECT *
FROM TVEpisode
WHERE TVEpisodeID IN
( SELECT min(TVEpisodeID)
FROM TVEpisode
WHERE watched=0
GROUP BY TVSeriesID) t