最新下载
热门教程
- 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
相关文章
- 漫蛙manwa2-官网最新入口 03-07
- dpck人工智能官网-权威入口 03-07
- 不背单词官网网页版-不背单词网页版快捷登录 03-07
- 一耽漫画最新版本下载入口-一耽漫画正版安装包下载入口 03-07
- twitter官网入口-twitter网页版登录 03-07
- 良心云游戏网页版最新登录地址一键获取-良心云游app手机版正版极速下载 03-07