我想知道这是否有可能让MySQL做"双重搜索"; 我真的不知道如何说得好,所以这是一个例子:
我有一张歌曲信息表(标题,专辑等等).我想获得专辑中的下一首歌.我有当前歌曲的ID.目前我获取行,检查专辑和跟踪字段,然后根据专辑字段执行另一个MySQL查询,并检查当前的跟踪之后是否有另一个跟踪.
我可以在一个查询中告诉MySQL我想要包含在我拥有的id行中的所有专辑行吗?
由于我真的不知道这是否可行或如何描述它,我在Stack Overflow上找不到任何有用的东西,所以如果已经有类似的话,那就很抱歉.
你可以使用JOIN来获得你想要的东西.假设你的桌子有一个链接到专辑的ID,那么这样就可以获得当前正在收听的音轨之后的所有内容.
select *
from songs a
join songs b
on a.album_id = b.album_id
where a.song_id = 1
and b.song_id > a.song_id
Run Code Online (Sandbox Code Playgroud)
显然,如果你想要专辑中的所有内容,那么删除第二个条件.如果要包括要收听的曲目更改>为>=.
你刚评论过:
我应该提到它,但id与轨道的顺序无关,它是表中的主键.
如果是这种情况,则b.song_id > a.song_id可能不正确.你还没有给我们你的完整架构,但我强烈建议你的songs桌子是否包含了应该播放曲目的顺序,所以它看起来像(SONG_ID, ALBUM_ID, ALBUM_ORDER, ... more song level info ).您的查询将变为:
select *
from songs a
join songs b
on a.album_id = b.album_id
where a.song_id = 1
and b.album_order > a.album_order
Run Code Online (Sandbox Code Playgroud)