SQL查询组按日期随机播放

时间:2013-10-27 17:55:05

标签: mysql sql

我有一个像

这样的查询
select id, item, date producer from table

结果如下:

id         item            producer            date
1          apple            A                  2013-10-26
2          pear             A                  2013-10-26
3          peach            A                  2013-10-26
4          orange           B                  2013-10-26
5          strawberry       B                  2013-10-27
6          melon            B                  2013-10-27
7          apple2           A                  2013-10-27
8          orange3          A                  2013-10-27

我需要将这些数据“按DATE DESC排序”进行随机播放,并获得以下内容:

item            producer
orange3          A
melon            B
apple2           A
strawberry       B
pear             A
orange           B
apple            A
peach            A
melon            B

我不想这样显示:

所有项目...... 所有B项目...或者今天添加的东西随机添加了一些东西...在我的例子中我不想在“orange3”之前显示“orange”

我的解决方案(但速度很慢)

Select * from table where date = $date order by rand;
Select * from table where date = $date -1 order by rand;
select * from table where date = $date -2 order by rand;

(这只是一个概念,$ date不能用这种方法递减)

1 个答案:

答案 0 :(得分:1)

看看以下是否适合您:

SELECT * 
FROM `table` 
ORDER BY `date` DESC, RAND()

我只是尝试了它,它似乎做了我认为你想要的。

修改

如果你想坚持“shuffle”,那么添加一个名为rnd的DOUBLE类型的列,做

UPDATE `table` SET rnd = RAND()

然后在SELECT语句中使用

.... ORDER BY `date` DESC, `rnd`