我可以要求MySQL进行"双重"搜索吗?

eep*_*yne 0 mysql sql

我想知道这是否有可能让MySQL做"双重搜索"; 我真的不知道如何说得好,所以这是一个例子:

我有一张歌曲信息表(标题,专辑等等).我想获得专辑中的下一首歌.我有当前歌曲的ID.目前我获取行,检查专辑和跟踪字段,然后根据专辑字段执行另一个MySQL查询,并检查当前的跟踪之后是否有另一个跟踪.

我可以在一个查询中告诉MySQL我想要包含在我拥有的id行中的所有专辑行吗?

由于我真的不知道这是否可行或如何描述它,我在Stack Overflow上找不到任何有用的东西,所以如果已经有类似的话,那就很抱歉.

Ben*_*Ben 5

你可以使用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)

  • 他们做了不同的事情@eephyne.唯一可以确定的方法是测试您自己的环境.如果它们的速度大致相同(并且它们可能会是这样),请使用_you_最了解的东西. (3认同)