最新下载
热门教程
- 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
相关文章
- 老头看到一美女大冬天还穿超短裙 04-30
- 我看看,在哪一层啊? 04-30
- 我满脸通红的说:这是首付 04-30
- 面试时候也把自己说的很牛B的样子 04-30
- 你们的菜要慢点上,厨师去买土豆了…… 04-30
- 看到没,个子矮连感应器都没反应 04-30