首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按日期洗牌的SQL查询组

按日期洗牌的SQL查询组
EN

Stack Overflow用户
提问于 2013-10-27 17:55:05
回答 1查看 201关注 0票数 0

我有个疑问

代码语言:javascript
复制
select id, item, date producer from table

其结果如下:

代码语言:javascript
复制
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

我需要对这些数据“按日期订购”进行洗牌,并得到如下内容:

代码语言:javascript
复制
item            producer
orange3          A
melon            B
apple2           A
strawberry       B
pear             A
orange           B
apple            A
peach            A
melon            B

我不想这样展示:

所有的东西..。所有的B物品..。或者洗牌今天加了什么昨天加了什么..。在我的例子中,我不想在"orange3“之前显示”橙色“

我的解决方案(但非常慢)

代码语言:javascript
复制
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 )

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-27 18:34:18

看看下面的内容是否对您有好处:

代码语言:javascript
复制
SELECT * 
FROM `table` 
ORDER BY `date` DESC, RAND()

我刚试过了,它似乎做了我认为你想做的事。

编辑

如果您想要持久化“洗牌”,然后添加一个类型为rnd类型的列,请执行

代码语言:javascript
复制
UPDATE `table` SET rnd = RAND()

然后在SELECT语句中使用

代码语言:javascript
复制
.... ORDER BY `date` DESC, `rnd`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19621360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档