我想到的是有规律的,而且有大大的规律,很有用的规律,例如当有很多很多的数据时(例如1000个数据,有可能有重复的),我需要最后面的50个不同的数据,而且是最后出现的放在最前面。举例说明吧:
有一组音乐点歌数据是这样的:(按时间先后顺序排列)
1、歌曲A
2、歌曲B
3、歌曲C
4、歌曲D
5、歌曲B(后来又有人点到歌曲B)
6、歌曲E
当我要播放最后点播的3首歌时(相同的歌曲只播放一次),我希望出现的是
歌曲依次是:歌曲E、B、D,但我用
select distinct MP3 from MUSIC order by id desc;
命令则不能出现我想要的,它的结果是E、D、C(因为它的排序是这样的:E、D、C、B、A)。
应该用什么方法才能达到我想要的目的。
希望大家为我指点迷津,谢谢
有一组音乐点歌数据是这样的:(按时间先后顺序排列)
1、歌曲A
2、歌曲B
3、歌曲C
4、歌曲D
5、歌曲B(后来又有人点到歌曲B)
6、歌曲E
当我要播放最后点播的3首歌时(相同的歌曲只播放一次),我希望出现的是
歌曲依次是:歌曲E、B、D,但我用
select distinct MP3 from MUSIC order by id desc;
命令则不能出现我想要的,它的结果是E、D、C(因为它的排序是这样的:E、D、C、B、A)。
应该用什么方法才能达到我想要的目的。
希望大家为我指点迷津,谢谢
6、歌曲A
5、歌曲B(后来又有人点到歌曲B)
4、歌曲C
3、歌曲D
2、歌曲B
1、歌曲E
当我要播放最后点播的3首歌时(相同的歌曲只播放一次),我希望出现的是
歌曲依次是:歌曲C、B、A,但我用
select distinct MP3 from MUSIC order by id desc;
命令则不能出现我想要的,它的结果是D、C、A(因为它的排序是这样的:E、B、D、C、A)。你可以只拿出前三首歌,而不必要全部拿来排,看
select distinct MP3 from MUSIC where id between '$from' and '$to' order by id desc;$from 为id最大值-3
$to 为id最大值这样取出来排序结果是CBA如果取前6个排
结果是EBDCA,仍然符合先点的歌先放的原则
ID 歌曲名
1 歌曲A(第一个点歌的人,id为1)
2 歌曲B
3 歌曲C
4 歌曲D
5 歌曲B(后来又有人点到歌曲B)
6 歌曲E
当我要选择最后点播的6首歌时(要求相同的歌曲只播放一次),我希望出现的歌曲依次是:歌曲E、B、D、C、A,但我用
select distinct MP3 from MUSIC where id between 1 and 5 order by id desc;(此时,相同的歌曲在 WHERE ID BETWEEN 1 AND 5 之间,结果导致WHERE ID BETWEEN 1 AND 5失效)
命令则不能出现我想要的,它的结果是E、D、C、B、A(因为它的排序是这样的:E、D、C、B、A)。
应该用什么方法才能达到我想要的目的?