最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ThinkPHP获取group by使用方法
时间:2022-11-14 23:00:29 编辑:袖梨 来源:一聚教程网
使用ThinkPHP获取group by总数可能并不是期望得到的结果,tp中语句如下:
$count = $this->xxx->where($where)->group($group)->count();
生成的sql语句:
SELECT count(*) FROM `xxx` WHERE ( (`biz_date` >= '20151014') AND (`biz_date` <= '20160111') ) GROUP BY biz_date
这样查出来的总数并不是这个结果集的条数.
如图:
结果是根据group by这个字段分组的每个分组总数。
那么获取结果总条数的正确的方式是:
//返回总数
if ($total) {
$sql = $this->xxx->where($where)->group($group)->buildSql();
$sql = 'select count(*) as tp_sum from' . $sql . 'as tt';
$result = $this->xxx->query($sql);
//echo $this->xxx->_sql();exit;
return $result[0]['tp_sum'];
}
也就是通过这样的sql语句来求group by的总条数:
select count(*) as tp_sum from( SELECT * FROM `xxx` WHERE ( (`biz_date` >= '20151014') AND (`biz_date` <= '20160111') ) GROUP BY biz_date )as tt
这样就OK了
group by实例
实例一
数据表:
姓名 科目 分数
张三 语文 80
张三 数学 98
张三 英语 65
李四 语文 70
李四 数学 80
李四 英语 90
期望查询结果:
姓名 语文 数学 英语
张三 80 98 65
李四 70 80 90
代码
create table testScore
(
tid int primary key identity(1,1),
tname varchar(30) null,
ttype varchar(10) null,
tscor int null
)
go
---插入数据
insert into testScore values ('张三','语文',80)
insert into testScore values ('张三','数学',98)
insert into testScore values ('张三','英语',65)
insert into testScore values ('李四','语文',70)
insert into testScore values ('李四','数学',80)
insert into testScore values ('李四','英语',90)
select tname as '姓名' ,
max(case ttype when '语文' then tscor else 0 end) '语文',
max(case ttype when '数学' then tscor else 0 end) '数学',
max(case ttype when '英语' then tscor else 0 end) '英语'
from testScore
group by tname
相关文章
- 苏丹的游戏部队获得途径 07-05
- 苏丹的游戏全部奇珍获取方式 07-05
- 金铲铲之战s14堡垒执事阵容攻略 07-05
- SATS价值币是什么?在2025年SATS币上涨空间大嘛? 07-05
- 燕云十六声我即是江湖称号怎么获得 07-05
- 崩坏星穹铁道3.2全追忆残像收集攻略 07-05