我有一个存储播放列表的表格。它的定义非常简单,只有三列:
这适用于在列表末尾添加新歌曲以及重新排列歌曲,但有没有办法让我查询此列表中列表中第一个元素的ID?又名没有nextID链接的那个?
目前我正在考虑将第一个songID存储在播放列表表格中,但如果可能的话,我想避免像这样混淆他们。
答案 0 :(得分:0)
这是SQL数据库的糟糕数据结构。关系模型不能很好地处理显式链表。
相反,您应该拥有一个包含以下列的表:
并将它们存储在一张桌子中。
但问题的答案是:
select *
from playlist
where nextID is null;
但是,我会称之为 last ,而不是第一个。
编辑:
你可以得到第一个:
select *
from playlist pl
where not exists (select 1 from playlist pl2 where pl2.nextid = pl.id and pl2.setId = pl.setId);