菜鸟提问mysql查询问题.勿喷

菜鸟提问mysql查询问题.勿喷

本宫微胖 发布于 2021-11-28 字数 823 浏览 703 回复 8

是这样,我有一个表,用户购买彩票表,字段有主键ID,用户UID,下单购买时间time,中奖state字段(如果中奖状态为1,未中奖状态为0)。现在我想做个排行榜,想统计出当日下单的中奖从大到小前20名排序, 该怎么查询。我在详细描述一下表, 当用户每购买一张彩票时,插入记录,当用户该张彩票中奖后改变那个购买记录state改为1。我现在想查询出中奖次数从大到小排序的前20名的排序。 纠结,忘指教,该怎么查询,怎么写,补充如下:

 我现在有个表,用户彩票下单购买表,该表

,有主键ID,用户ID,购买单号sid,唯一表示usid(这个可以不用管,这个是为了防止并发插入加入的约束标识),购买时间buytime,彩票揭晓时间hdtime,彩票是否中奖状态state。就这几个字段.

 现在我想弄个排行榜,如此图,

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

晚风撩人 2021-12-01 8 楼

MySQL的写法:

select uid, count(id) ct
from t_table where state=1 and date(buytime)=current_date() 
group by uid order by ct desc limit 20;

爱的故事 2021-12-01 7 楼

我补充了问题,能否看下,是否这样写。麻烦了

辞别 2021-12-01 6 楼

一样,select uid 换成需要的字段

眉黛浅 2021-12-01 5 楼

SELECT UID FROM table WHERE LEFT(date,10)=LEFT(NOW(),10) GROUP BY UID ORDER BY COUNT(UID) DESC LIMIT 20

德意的啸 2021-12-01 4 楼

我补充了问题,能否看下,是否这样写。麻烦了。

柒夜笙歌凉 2021-12-01 3 楼

select * from 表 where ID in (select 用户ID from 表 group by 用户ID order by count(*) desc limit 20)

大概是这样

卸妝后依然美 2021-12-01 2 楼

已补充问题

倚栏听风 2021-11-29 1 楼

中奖次数是指什么?某个人一共中了多少奖?