Mysql 如何在播放列表中找到第一首歌曲?(单链表)

Mysql 如何在播放列表中找到第一首歌曲?(单链表),mysql,Mysql,我有一个存储播放列表的表格。它的定义非常简单,只有三列: setID-16位十六进制,引用我的播放列表表中的一行 songID-引用我的歌曲表中的一行的16位十六进制 nextID-包含下一个条目songID的16位十六进制 这对于将新歌添加到列表末尾以及重新排列歌曲都很有效,但是有没有办法查询列表中第一个元素的id?也就是没有nextID链接的那个 目前我正在考虑将第一个songID存储在playlists表中,但如果可能的话,我希望避免这样混淆它们。对于SQL数据库来说,这是一个糟糕的数据结

我有一个存储播放列表的表格。它的定义非常简单,只有三列:

setID-16位十六进制,引用我的播放列表表中的一行 songID-引用我的歌曲表中的一行的16位十六进制 nextID-包含下一个条目songID的16位十六进制 这对于将新歌添加到列表末尾以及重新排列歌曲都很有效,但是有没有办法查询列表中第一个元素的id?也就是没有nextID链接的那个


目前我正在考虑将第一个songID存储在playlists表中,但如果可能的话,我希望避免这样混淆它们。

对于SQL数据库来说,这是一个糟糕的数据结构。关系模型不能很好地处理显式链表

相反,您应该有一个包含以下列的表:

setID 歌号 松吉德 然后把它们放在一张桌子上

不过,你的问题的答案是:

select *
from playlist
where nextID is null;
然而,我认为这是最后一次,而不是第一次

编辑:

您可以通过以下方式获得第一个:

select *
from playlist pl
where not exists (select 1 from playlist pl2 where pl2.nextid = pl.id and pl2.setId = pl.setId);

这实际上是最后一个。我需要确定第一个。不是没有nextID的,而是没有nextID引用的。歌曲编号是一种痛苦,因为我不需要明确知道编号,我只需要通过一次移动一首歌曲来重新排序。在有编号的设置中,我需要对可能大量的行重新编号,以便在链接列表中移动一首歌曲,我只更新两行。是否有更改模型的选项?或者你必须坚持使用它?这是一个改变到索引模型的选项,这可能是我必须要做的,但我想看看是否存在使链表工作的可能性。