mysql中group by的用法

应用场景,彩票的开奖表

CREATE TABLE `fz_lottery20_winning` (
  `winning_id` varchar(255) NOT NULL COMMENT '期次id',
  `type` varchar(255) DEFAULT NULL COMMENT '彩票类型',
  `winning_num` varchar(255) DEFAULT NULL COMMENT '开奖号码',
  `term` varchar(255) DEFAULT NULL COMMENT '期数',
  `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`winning_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='期次记录表';

一、普通的group by查询(查询每种彩票的一期开奖信息)

SELECT
*
FROM
fz_lottery20_winning
GROUP BY

type

结果是得到每种彩票的第一条数据(数据库ID最小的一条)

二、通过group by查询每组中期数最大的一期

SELECT

a.*
FROM
(select * FROM fz_lottery20_winning ORDER BY term DESC) tt
GROUP BY

tt.type

其中select * FROM fz_lottery20_winning ORDER BY term DESC是将整个表先排序,再分组

三、group by和join一起用,原则是先通过group by生成一个临时表

SELECT
b.ftb_id,b.date,b.time,a.total_number
FROM
(SELECT ftb_id,COUNT(1) total_number from fz_lottery23_ftb_detail WHERE `status`="1" GROUP BY ftb_id)a
JOIN
fz_lottery22_ftb b
WHERE
a.ftb_id=b.ftb_id



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值