我有一个像
这样的查询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不能用这种方法递减)
答案 0 :(得分:1)
看看以下是否适合您:
SELECT *
FROM `table`
ORDER BY `date` DESC, RAND()
我只是尝试了它,它似乎做了我认为你想要的。
如果你想坚持“shuffle”,那么添加一个名为rnd
的DOUBLE类型的列,做
UPDATE `table` SET rnd = RAND()
然后在SELECT语句中使用
.... ORDER BY `date` DESC, `rnd`