【发布时间】:2021-01-22 19:32:57
【问题描述】:
我的应用程序将数百个播客剧集存储在一个 SQLite 表中。我正在寻找返回五个最新剧集的查询每个播客(播客存储在不同的表中)。
相关的表格列是
-
media_id= 主键(剧集的唯一标识符) -
publication_date= 可用于查找最新剧集 -
episode_remote_podcast_feed_location= 定义与播客的关系
这是我尝试过的:
SELECT *
FROM episodes a
WHERE a.media_id IN (
SELECT b.media_id
FROM episodes b
WHERE a.episode_remote_podcast_feed_location = b.episode_remote_podcast_feed_location
ORDER BY b.episode_remote_podcast_feed_location, b.publication_date DESC
LIMIT 5
)
ORDER BY a.episode_remote_podcast_feed_location, a.publication_date
上述查询总是返回五集(总共)——无论我有多少播客。至少这些剧集都属于同一个播客。 (剧集对于episode_remote_podcast_feed_location 具有相同的值。)
需要的解决方案:我需要一个查询来为每个播客返回五集(最近的集)。因此,如果应用程序只存储了一个播客,则返回五集。如果应用程序存储了三个播客,则返回 15 集:播客 b 为 5 集,播客 c 为 5 集。
其他信息:我需要能够在 Android 应用程序中使用查询。与 Android 捆绑的 SQLite 版本是not the most current。 Android 不支持某些 SQLite 功能,例如窗口函数(另请参阅:https://stackoverflow.com/a/55069907/14326132)。
【问题讨论】:
标签: sql sqlite datetime greatest-n-per-group window-functions